2014-10-06 63 views
0

我與Lazarus使用Synapse庫,我試圖切換兩個不同IP地址之間的TCPBlockSocket連接。關閉連接並重新打開與拉扎魯斯Synapse

我創建一個Socket連接:

mySocket:=TTCPBlockSocket.Create 

我再與連接到第一個IP地址:

mySocket.Connect(firstIPaddress,portNumber); 

這工作得很好,但如果我嘗試切換到第二個IP地址與

mySocket.Connect(secondIPaddress,portNumber); 

mySocket.SendString()發送任何數據仍發送到firstIPaddress

我已經試過.Destroy荷蘭國際集團mySocket並重新創建它,但我得到的崩潰(我是否mySocket分配,如果它是重新創建TCPBlockSocket對象之前做.Destory - 但似乎有點嚴重反正

是有沒有斷開並重新退出的TCPBlockSocket到一個不同的IP地址?

,並有一個簡單的方法來測試,如果TCPBLockSocket具有活動和工作連接正確的方式?

+0

我看了一下http://stackoverflow.com/questions/13045943/delphi -synapse-how-to-check-if-i-am-still-connected for the second question above,but'(mySocket.Socket = INVALID_SOCKET)or((mySocket.WaitingData = 0)and mySocket.CanRead(0)) 「即使我有很好的連接,它總是返回假... – 2014-10-06 16:10:39

+0

經過進一步調查,它似乎是'.CanRead(0)'每次都返回'false'並導致調用返回'false' - 偶數儘管連接很好。 – 2014-10-08 08:31:04

回答

1

這是當你找到它時很明顯...

在用.Connect呼叫新的IP地址和端口之前,您需要先撥打mySocket.CloseSocket()

(還有問題檢查,如果打開的連接仍然是開放的,雖然工作 - 按我的意見給OP)