Найти - Пользователи
Полная версия: socket и Линукс
Начало » Python для новичков » socket и Линукс
1 2
Ed
nauman
Серверная часть работает на нескольких удаленных компах в пределах локальной сети, везде стоит XP.
А линух в этой же локальной сети или вне ее пределов?
Ed
Наверное нужно объяснить куда я клоню. То, что линух получает 1448 за раз как раз понятно. Это стандартный для Ethernet MTU(1500) минус TCP и IP заголовки. И как правильно здесь написали - это не ограничение ОС, а вполне нормальное поведение под названием сегментирование TCP, если я правильно помню. И recv нужно звать пока не вычитаем все. Это везде описано. Да вот хотя бы и в примере к модулю socket: http://docs.python.org/library/socket.html#example, раз уж мы о Питоне говорим.

Вопрос в том почему винда так не делает. Может линух просто быстрее и поэтому recv успевает вычитать первый TCP сегмент быстрее, чем приходит второй. Или все-таки виндовый клиент внутри сети, а линуховый снаружи?
tmp_a6367100
Вопрос в том почему винда так не делает.
ещё можно покапать в сторону того как работают в венде и linux – алгоритмы формирования “окон” внутри TCP потока ..

…кстате говоря в Windows Vista (se7ven) – подсистему-TCP переработали – а значит возможно и там теперь будет 1448 . проверяли?
nauman
Linux и windows на одной машине, в пределах той же сети. На Висте и 7 не проверял.
nauman
Всем спасибо за участие, получилось методом склейки из кусочков.
Ed
nauman
Всем спасибо за участие, получилось методом склейки из кусочков.
Вдогонку - send тоже может послать не все. Так что проверьте еще и серверный код. Там точно так же нужно делать. Проверять сколько ушло и посылать в цикле пока все не пошлется.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB