dbg

(Untitled)

Oct 25, 2007 14:05

Иногда я захожу почитать rsdn.ru. Из чистого любопытства. Иногда там кроме "жабобыдлокодерства" обсуждается что-нибудь интересное. Сегодня я натолкнулся на тред про TCP.

Вопрос формулируется так: Программы обмениваются сообщениями через TCP. Сообщения короткие, с десяток байт. Возможно ли такое что на принимающей стороне recv вернёт меньшее ( Read more... )

Leave a comment

Comments 50

alexott October 25 2007, 10:29:13 UTC
подарочным изданием из 3-х томов :-)

Reply

dbg October 25 2007, 10:41:51 UTC
Если уж так, то тогда полным комплектом: APUE, оба тома UNP и три TCP/IP Illustrated. Но есть опасность, что обучаемый не выживет :)

Reply

awind October 25 2007, 10:47:40 UTC
остальными продублировать по шаловливым ручкам ;)

Reply

alexott October 25 2007, 10:52:32 UTC
кстати - да :-)

Reply


1esha October 25 2007, 10:45:22 UTC
а для идиотов объяснить почему так произошло можно? :)

Reply

dbg October 25 2007, 10:49:47 UTC
Эээ. Я даже затрудняюсь. Мне казалось, я написал со всеми подробностями. Если непонятно на каком-то шаге, то я объясню, надо только сказать на каком.

Reply

(The comment has been removed)

dbg October 25 2007, 13:59:22 UTC
> recv 1 bytes - получатель ожидает 17 байт, соответственно этот байтик он не получит или все-таки ПО получит 1 байт с указанием, что это 1 байт, а не 17?

recv(2) или read(2) вернет количество байт, которое удалось прочитать, т.е. 1. Надо только не лениться и смотреть на возвращаемое значение. Ну и не делать глупых предположений, что оно всегда равно запрошенному количеству.

> По хорошему перед приемом надо смотреть количество данных в буфереа и, если они превышает 17 байт - сливать в программу.

А этого предложения я не понял. Можно развить мысль?

Reply


dimrub October 25 2007, 10:49:11 UTC
Кстати, последнее переиздание Стивенсона раза в три тоньше предыдущих. Кол-во страниц - то же. Бумага там папиросная, что-ли?

Reply

dbg October 25 2007, 10:52:15 UTC
Он Стивенс, Стивенсон - это автор "Острова сокровищ" ;)

А последнего издания я не видел. Если там папиросная бумага, то будем бить старым, которое было на правильной бумаге с правильным переплетом :)

Reply

alexott October 25 2007, 10:52:55 UTC
тогда обучаемый точно не выживет :-)

Reply

dimrub October 25 2007, 10:58:28 UTC
Он Стивенс, Стивенсон - это автор "Острова сокровищ" ;)

И Криптономикона :). Да, я их всегда путаю.

Reply


visir October 25 2007, 11:00:49 UTC
С сообщениями побольше (256 байт в частности, а может и 512, не помню точно) в свежем линуксе другая приколюха: он начинает с меньшего окна, и сообщение уходит несколькими пакетами...

PS: недавно вышла новая редакция APUE, и ее уже успели перевести )

Reply

dbg October 25 2007, 11:02:59 UTC
tcpdump покажешь?

Reply

visir October 25 2007, 11:03:43 UTC
ок, вечером, как домой приду

Reply

visir October 25 2007, 16:05:33 UTC
началось это все с обновления ядра, сейчас оно такое:
$ 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


reedcat October 25 2007, 11:37:38 UTC
Увы... Никто никого не ударит... :(
Ибо методика написания кривого софта, хараткерная для "троечников" уже стала стандартом де-факто. :(

P.S. А за рассказ - спасибо! В тебе погибает гениальный методист. :)

Reply

dbg October 25 2007, 11:54:07 UTC
На здоровье :) Спасибо за комплимент.

Я немножко оптимист. Наверное, кому-то еще можно помочь. Поэтому рассказывать, писать, объяснять надо.

Reply

reedcat October 25 2007, 14:08:24 UTC
Так и я про то.. Что объяснять - надо. Что у тебя это очень хорошо получается - структурно и внятно.
Так наверное, если ты оптимист, имеет смысл делать это не только в кругу друзей в Ж(ареной)Ж(..е) ? :)

Скомпоновать и издать (сначала в сети) что-то типа "Записок роботёнка Дани изнутри IP-сети" :)

P.S. ;-P

Reply

dbg October 25 2007, 14:24:56 UTC
да ну, меня пока формат блога устраивает. Потом как-нибудь, если не заломает, сделаю оглавление. А на что читатели ссылки будут ставить, на блог или на что-то отдельное - разницы никакой.

Reply


Leave a comment

Up