LINUX.ORG.RU

как побороть тайм-ауты в ТСР-соединении?


0

0

Суть проблемы в следующем: написал программку, которая слушает запрос на свой порт, а затем, после обращения к ней клиента, устанавливает соединение с сервером и становится "прозрачной" и для клиента, и для сервера. Схематично выглядит: connect(...); for(;;) { FD_ZERO(...);FD_SET(...);tv.tv_sec = TIMEOUT; tv.tv_usec= 0; while(select(...)) { nbytes = recv() from server; if (nbytes == 0) break; send() to client;} FD_ZERO(...);FD_SET(...);tv.tv_sec = TIMEOUT; tv.tv_usec= 0; while(select(...)) { nbytes = recv() client; send() to server;} } //end for(;;) суть проблемы в следующем - если дать маленький тайм-аут, то кто-либо из участников может не успеть выговорится, и тогда - каюк. Если тайм-аут большой - низкая производительность. Анализировать трафик на наличие CRLF и т.д. - и дорого, и не приведет к универсальности. Кто может подсказать пути решения ? Мой мэйл - gorikh@ingos.ru

anonymous

tcpproxy что-ли кропаешь? Не компостируй мозги, изобретая велосипед. В Сети полно готовых примеров такой программы, которые можно использовать непосредственно или с малыми, нужными тебе, переделками. Ищи ключевые слова tcpproxy, redir. На крайняк поможет опция redirector в xinetd. Правда она кажись не во всех версиях работает.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.