Иногда я захожу почитать rsdn.ru. Из чистого любопытства. Иногда там кроме "жабобыдлокодерства" обсуждается что-нибудь интересное. Сегодня я натолкнулся на
тред про TCP.
Вопрос формулируется так: Программы обмениваются сообщениями через TCP. Сообщения короткие, с десяток байт. Возможно ли такое что на принимающей стороне recv вернёт меньшее
(
Read more... )
Comments 50
Reply
Reply
Reply
Reply
Reply
Reply
(The comment has been removed)
recv(2) или read(2) вернет количество байт, которое удалось прочитать, т.е. 1. Надо только не лениться и смотреть на возвращаемое значение. Ну и не делать глупых предположений, что оно всегда равно запрошенному количеству.
> По хорошему перед приемом надо смотреть количество данных в буфереа и, если они превышает 17 байт - сливать в программу.
А этого предложения я не понял. Можно развить мысль?
Reply
Reply
А последнего издания я не видел. Если там папиросная бумага, то будем бить старым, которое было на правильной бумаге с правильным переплетом :)
Reply
Reply
И Криптономикона :). Да, я их всегда путаю.
Reply
PS: недавно вышла новая редакция APUE, и ее уже успели перевести )
Reply
Reply
Reply
$ uname -a
Linux visir.telenet.ru 2.6.18-4-vserver-686 #1 SMP Thu May 10 01:37:59 UTC 2007 i686 GNU/Linux
tcpdump (соединение инициируется мной, первый "большой" пакет исходит от сервера):
21:59:10.861931 IP 87.224.154.2.37510 > 10.0.0.1.8314: S 1395874415:1395874415(0) win 5840
21:59:10.862865 IP 10.0.0.1.8314 > 87.224.154.2.37510: S 2568838757:2568838757(0) ack 1395874416 win 65535
21:59:10.862904 IP 87.224.154.2.37510 > 10.0.0.1.8314: . ack 1 win 46
21:59:10.865091 IP 10.0.0.1.8314 > 87.224.154.2.37510: P 1:2(1) ack 1 win 33304
21:59:10.865123 IP 87.224.154.2.37510 > 10.0.0.1.8314: . ack 2 win 46
21:59:10.865144 IP 10.0.0.1.8314 > 87.224.154.2.37510: . 2:47(45) ack 1 win 33304
21:59:10.865154 IP 87.224.154.2.37510 > 10.0.0.1.8314: . ack 47 win 46
21:59:10.865989 IP 10.0.0.1.8314 > 87.224.154.2.37510: P 47:258(211) ack 1 win 33304
21:59:10.866002 IP 87.224.154.2.37510 > 10.0.0.1.8314: . ack 258 win 54 21:59:13.867305 IP 87.224.154.2.37510 > 10.0.0.1.8314: P 1:257(256) ( ... )
Reply
Ибо методика написания кривого софта, хараткерная для "троечников" уже стала стандартом де-факто. :(
P.S. А за рассказ - спасибо! В тебе погибает гениальный методист. :)
Reply
Я немножко оптимист. Наверное, кому-то еще можно помочь. Поэтому рассказывать, писать, объяснять надо.
Reply
Так наверное, если ты оптимист, имеет смысл делать это не только в кругу друзей в Ж(ареной)Ж(..е) ? :)
Скомпоновать и издать (сначала в сети) что-то типа "Записок роботёнка Дани изнутри IP-сети" :)
P.S. ;-P
Reply
Reply
Leave a comment