Я использую библиотеку Synapse с Lazarus, и я пытаюсь переключить соединение TCPBlockSocket
между двумя разными IP-адресами.Закрытие соединения и повторное открытие с помощью Synapse в Lazarus
создать сокет-соединение с:
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
имеет активную и рабочую связь?
Я имел взгляд на http://stackoverflow.com/questions/13045943/delphi -synapse-how-to-check-if-i-am-still-connected для второго вопроса выше, но '(mySocket.Socket = INVALID_SOCKET) или ((mySocket.WaitingData = 0) и mySocket.CanRead (0)) 'всегда возвращает false, хотя у меня есть хорошая связь ... –
После дальнейшего исследования кажется, что это' .CanRead (0) 'возвращает' false' каждый раз и заставляет вызов возвращать 'false' - even хотя соединение хорошее. –