Вниз
Скачать: CL | DM;

Вопрос про сокеты, а точнее про FD_CLOSE и FD_READ   Найти похожие ветки 

 
имя   (2008-02-05 19:35) [40]

Удалено модератором


 
ага   (2008-02-06 13:22) [41]

Просмотрел бегло, может уже сказано, но не заметил.

Нормально это, FIN пришел вместе с последним пакетом. Сервер закончил запись и вызвал shutdown на свой передающий конец - типа больше ниче передавать не буду. Сокет отправил все из буфера и с последним пакетом - FIN. Получив его, нужно вычерпать все из буфера и закрыть свой приемный конец.


 
имя   (2009-02-04 17:32) [42]

Удалено модератором


 
FireMan_Alexey   (2009-02-04 18:29) [43]

Сделай так:

While True do
Begin
 Err:=Recv(...);
 IF err=SOCKET_ERROR and WSAGetLastError=WSAEWOULDBLOCK Then
   Break;
End;
Event - сигнализирует о приходе данных, а IOCTLSocket - покажет всего 8192 макс хотя там может быть и больше :) (проверенно экспериментально)
А вообще лучше использовать Select в потоках :) тоже экспериментально :)
Я тоже пытался прокси на Эвентах написать, но столкнулся с такой же ситуацией и с не закрытыми соединениями со стороны апачей :).
Спасло только то что весь код переделал под синхронные сокеты.


 
!"№;%:?*   (2009-03-12 07:30) [44]

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

В отдельном потоке, можно и блокирующими сокетами обойтись.


 
Palladin ©   (2009-03-12 08:28) [45]


> FireMan_Alexey   (04.02.09 18:29) [43]

А ничего что год прошел? :)



Страницы: 1 2 вся ветка

Скачать: CL | DM;



Память: 0.52 MB
Время: 0.007 c
15-1294807250
Xmen
2011-01-12 07:40
2011.04.24
переход в DevExpress


15-1294954192
Юрий
2011-01-14 00:29
2011.04.24
С днем рождения ! 14 января 2011 пятница


1-1252579314
webpauk
2009-09-10 14:41
2011.04.24
тень


6-1236577141
kernel
2009-03-09 08:39
2011.04.24
Зависание IdHTTPProxyServer


2-1295358908
Сергей
2011-01-18 16:55
2011.04.24
Как запустить окно (winapi) по клику кнопки?




   Наверх