|
при программировании сокетов через события (с помощью WSAEventSelect(..., FD_READ|FD_WRITE|FD_CLOSE)) при отправке серии 9,5Кб блоков данных иногда возникает ситуация, что функция send начинает возвращать WSAEWOULDBLOCK, причём после этого уведомление FD_WRITE так и не приходит, т.е. сокет затыкается намертво, помогает только полное закрытие/открытие сокета. Пакеты передаются импульсно т.е. некоторое время может ничего не передаваться, а иногда за одну секунду передаётся несколько таких блоков (до 10). Сетка 10-Мбитная, т.е. объём для передачи вполне допустимый, причём фишка ещё в том, что в таком режиме прога может нормально проработать несколько часов, а потом заткнуться как указано выше, хотя средний объём передаваемых данных не меняется.
Есть эксперты про программированию winsock? Может кто-то знает как разрулить?
|