[Comm] серьёзная проблема с UDP сокетами
Gleb Kulikov
=?iso-8859-1?q?gleb_=CE=C1_asd=2Eiao=2Eru?=
Сб Мар 6 11:31:27 MSK 2004
Джентельмены!
Необжиданная проблема (Master 2.2 + updates):
есть некий прибор, отвечает которкими дэйтаграммами (256 байт) по 2 портам, 77
и 57. После отправки любого пакета в *57 порт прибора*, он отвечает 256
байтами данных по *57 порту в наш адрес*.
Пишем простенькую программу, биндимся на нашIP:57 и получаем с него данные.
Через непредсказуемый интервал времени (может прибежать от 0 до N :) пакетов
(а их довольно много, до 2048 пакетов с интервалом порядка нескольких мс
между пакетами), readfrom возвращает Resource temporarily unavailable. И всё.
исправляет ситуацию только перезагрузка программы, а через некоторое время
-- только перезагрузка *СИСТЕМЫ*.
Сокеты выделяются только один раз, не закрываются. Впрочем, если их каждый раз
уничтожать/создавать, поведение не меняется. Переполнение буферов также
сомнительно, так как пакеты идут по нашей инициативе (я пишу 1 байтовый пакет
в remoteIP:57, только после чего слушаю мойIP:57::remoteIP:57).
Аналогичная программа под OS/2 и Windows, работает без всяких проблем сутками.
Это известные грабли? Куда смотреть / что подкрутить?
--
Салют, /GLeb
Подробная информация о списке рассылки community