2016-06-27 3 views
2

Как включить флаг TCP PSH в функции записи для отправки сообщения без заполнения буфера?Как включить tcp psh в стек TCP/IP?

+0

На каких языках вы программируете? Вы можете добавить тег с указанным языком к своему вопросу, чтобы люди могли легко найти ваш вопрос. –

+0

Спасибо. Я работаю на языке C –

+0

проверить эту тему: http://stackoverflow.com/questions/855544/is-there-a-way-to-flush-a-posix-socket –

ответ

0

Вы не видите, что ваши пакеты выходят без флага PSH, установленного уже сейчас? Некоторые эксперименты показали, что здесь следующий пакет в ТСРйитре:

00:00:47.633884 IP 90.155.34.205.52092 > 216.58.222.100.80: Flags [P.], seq 1:16, ack 1, win 29, options [nop,nop,TS val 35956508 ecr 2650150746], length 15: HTTP: GET/HTTP/1.0 
[email protected]@...Z."..:.d.|.P......QM........... 
.$.....ZGET/HTTP/1.0 

вышел используя очень простые скучные записи() - от strace'ing Netcat:

socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 3 
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 
setsockopt(3, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0 
connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("216.58.222.100")}, 16) = 0 
write(3, "GET/HTTP/1.0\n", 15)  = 15 

Он смотрит на меня, как флаг PSH отключается, если, например, я передаю больше данных, чем подходит в одном сегменте, и в этом случае только последний сегмент будет иметь PSH, указывая, что на данный момент больше данных.

Смежные вопросы