Question

J'ai demandé ici cette question précédente:

TCP deux côtés qui tentent de se connecter simultanément

i essayé la méthode donnée dans la solution et tout en envoyant tout en utilisant netcat et renifler des paquets avec i observé éthérée que lorsque i envoyé une chaîne « bonjour » d'un côté à l'autre, il a été envoyé dans un segment avec l'ensemble poussoir du pavillon .

qui décide de fixer le bouton drapeau? quelles sont les règles de fixation du poussoir ou drapeau d'urgence dans un segment de tcp? est-il possible de le faire en utilisant l'api sockets?

Était-ce utile?

La solution

Le drapeau PUSH est utilisé par la pile de tcp dire essentiellement « Je suis fait pour l'instant ». Il est juste indiquant le segment de données est entièrement transmis par la source.

Il n'y a pas moyen d'indiquer ou de contrôler en userland (votre prise api), car cela est juste la pile tcp / mise en œuvre pour le faire. Comme le drapeau URGENT.

(Source: Richard Stevens - Tcp / ip illustré vol 1 , chapitre 20)

Autres conseils

Vous pouvez définir le drapeau URGENT en utilisant send() avec le drapeau de MSG_OOB. Comme cela implique, les données envoyées seront hors bande, ce qui signifie qu'il ne sera pas normalement reçu par le côté appelant simplement appeler read(). Le côté réception obtiendra une indication de données hors bande comme le signal SIGURG, ou la prise deviendra exceptionnelle et peut être vérifié en tant que telle en utilisant select().

La plupart du temps vous ne voulez pas mettre le drapeau URGENT.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top