Я использую библиотеку Synapse с Lazarus и пытаюсь переключить соединение TCPBlockSocket
между двумя разными IP-адресами.
Я создаю соединение Socket с помощью:
mySocket:=TTCPBlockSocket.Create
Затем я подключаюсь к первому IP-адресу с помощью:
mySocket.Connect(firstIPaddress,portNumber);
Это отлично работает, но если я попытаюсь переключиться на второй IP-адрес с помощью
mySocket.Connect(secondIPaddress,portNumber);
любые данные, которые я отправляю с помощью mySocket.SendString()
, по-прежнему отправляются на firstIPaddress
.
Я пробовал .Destroy
ing mySocket
и воссоздавать его, но получаю сбои (я проверяю, назначен ли mySocket
и выполняет ли он .Destory
перед воссозданием объекта TCPBlockSocket
, но в любом случае это кажется немного серьезным.
Есть ли правильный способ отключить, а затем снова подключить существующий TCPBlockSocket
к другому IP-адресу?
И есть ли простой способ проверить, есть ли у TCPBLockSocket
активное и работающее соединение?
(mySocket.Socket = INVALID_SOCKET) or ((mySocket.WaitingData = 0) and mySocket.CanRead(0))
всегда возвращает false, даже если у меня хорошее соединение... - person Fat Monk   schedule 06.10.2014.CanRead(0)
каждый раз возвращаетfalse
и заставляет вызов возвращатьfalse
, даже если соединение хорошее. - person Fat Monk   schedule 08.10.2014