Synapse. Таймаут для TCP/IP соединения

Модератор: Модераторы

Synapse. Таймаут для TCP/IP соединения

Сообщение Ichthyander » 14.04.2016 17:13:08

Как настроить таймаут для TCP соединения в synapse в классе TTCPBlockSocket
Делал вот так. То есть при выполнении операции RecvPacket указывал в аргументах время ожидания (TimeOut) в мс. Так вот заметил, что таймаут часто не работает.
Код: Выделить всё
procedure TMyTCPBlockSocket.Request;
var
  BS, Prefix, Postfix: string;
begin
  Connect(MyServer, MyPort);
  if (LastError = 0) or (LastError = 10054) then
  begin
    SendString(MessageToServerByTCP+#$0D#$0A);
    repeat
      BS := RecvPacket(TimeOut);
      FReply := FReply + BS;
    until LastError <> 0;
  end
  else
    FReply := FReply + str_QueryFailed+#$0D#$0A + LastErrorDesc;
end;

Я так полагаю в момент соединения Connect(MyServer, MyPort). Но как задать таймаут для установски соединения TCP/IP сокетов?

Добавлено спустя 1 час 44 минуты 4 секунды:
Вот что нашел


How To Change Connect Timeout

Synapse library using sockets in blocking mode. But blocking call of Connect not have any timeout. Timeout for Connect is hardcoded in communication stack of your operating system.

:!: Any timeout property in Synapse cannot define timeout for connecting of TCP channel. It is not a bug, it depending on design of used socket API.

Exists two possible workarounds:

Call Connect in non-blocking mode. (ugly…)
Raise helper thread and after timeout try to close socket handler from this thread. (it is ugly too…)


http://www.ararat.cz/synapse/doku.php/p ... ecttimeout

Добавлено спустя 22 часа 24 минуты 47 секунд:
Может кому пригодится: проблему решил просто без всяких там ugly-решений. Я пользовался стабильной версией synapse 2012 года. В транковой же версии https://sourceforge.net/p/synalist/code/HEAD/tree/trunk/ появилось новое свойство ConnectionTimeout в объектах класса TTCPBlockSocket, которое и выполняет функцию таймаута момента соединения.
Аватара пользователя
Ichthyander
энтузиаст
 
Сообщения: 668
Зарегистрирован: 04.04.2007 08:32:43
Откуда: Астрахань

Вернуться в Сети

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru