我有一個unity3d客戶端使用BeginConnect
來連接我的本地服務器,但無法建立連接,特別是在我重新啓動統一編輯器後。一旦連接,即使重新開始遊戲(而不是編輯器),它也會變得非常正常。tcp客戶端無法連接到本地服務器統一
wireshark顯示問題發生時不發送任何內容。
我有另一個非常相似的客戶端,但它可以非常完美地連接到我的另一個類似的本地服務器。
任何想法是什麼導致了這個問題?
在此先感謝。
===
PS。即使重試機制
- 客戶端可以連接到服務器succssfully但後來的異步操作(
BeginSend
&BeginReceive
)仍可能會隨機停止工作。 - 即使我運行客戶端而無需運行服務器,連接可能無響應。
我有代碼關閉套接字在
OnApplicationQuit()
功能:socket.Shutdown(SocketShutdown.Both); socket.Close();
- 另一個類似的客戶端具有幾乎相同的代碼庫,但工作得很好。
- 我發現了另一個類似的問題:http://answers.unity3d.com/questions/925955/socketbeginwrite-no-response-in-463f1.html?sort=oldest。但它無法解釋爲什麼我的另一個客戶(統一版本)工作。
但是另一個類似的客戶端呢,它工作得很好。 – crazybie 2015-03-31 09:54:24
只要你認真處理我上面提到的Unity編輯器特定的事情,它就應該可以工作。也許你的代碼有一個bug或什麼的。你嘗試建立和運行? – 2015-03-31 10:22:48
我使用socket.BeginConnect和AsyncCallback來處理結果。即使經過很長時間,回調也永遠不會被調用。即使當我運行客戶端而不運行本地服務器時,它也沒有響應。從MSDN開始,運行時將使用後臺線程來處理請求,那麼請求是否可能被運行時間所拒絕? – crazybie 2015-04-01 06:03:46