【发布时间】:2014-11-30 20:37:50
【问题描述】:
我正在使用带有 Lazarus 的 Synapse 库,并尝试在两个不同的 IP 地址之间切换 TCPBlockSocket 连接。
我创建了 Socket 连接:
mySocket:=TTCPBlockSocket.Create
然后我连接到第一个 IP 地址:
mySocket.Connect(firstIPaddress,portNumber);
这很好用,但如果我尝试切换到第二个 IP 地址
mySocket.Connect(secondIPaddress,portNumber);
我使用mySocket.SendString() 发送的任何数据仍会发送到firstIPaddress。
我已经尝试 .Destroying mySocket 并重新创建它,但我遇到了崩溃(我检查是否分配了 mySocket 以及是否在重新创建 TCPBlockSocket 对象之前执行 .Destory - 但这似乎是反正有点严重。
是否有正确的方法来断开现有的TCPBlockSocket,然后将其重新连接到不同的 IP 地址?
有没有一种简单的方法来测试TCPBLockSocket 是否有一个活跃的工作连接?
【问题讨论】:
-
我已经看过stackoverflow.com/questions/13045943/… 上面的第二个问题,但
(mySocket.Socket = INVALID_SOCKET) or ((mySocket.WaitingData = 0) and mySocket.CanRead(0))总是返回false,即使我有一个良好的连接...... -
经过进一步调查,似乎是
.CanRead(0)每次都返回false并导致调用返回false- 即使连接良好。