2012-01-30 133 views
0

我有一個OpenFramework套接字服務器的AS3 TCP客戶套接字連接。有時客戶端在一秒鐘內發送大約20條消息,但服務器從不會收到1條或2​​條消息。AS3 TCP套接字丟包

有人知道是否有一個secury的方式發送我的消息沒有丟失的包? 我做錯了什麼?

我的代碼如下所示:

socket = new Socket(); 
socket.addEventListener(Event.CONNECT, connectHandler); 
socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler); 

public function send(m:String):void 
{ 
    socket.writeUTFBytes(m); 
    socket.flush(); 
} 
+0

確定服務器沒有收到消息嗎?網絡將小消息組合成一個數據包,並分割大數據包。也許你只是不讀直到結束,或者等到完整的數據包進來? – 2012-01-30 10:56:37

+0

Wheres處理策略文件的代碼? – 2012-01-30 16:50:26

+0

沒有看到你正在做的事情顯然是錯誤的,你有沒有嘗試使用諸如wireshark之​​類的東西來監視流量?當談到較低層次的網絡通信時,這種工具是無價的。根據Adobe文檔,Socket類使用TCP通道,這意味着它不應該丟失任何東西(如果它是UDP丟棄的消息將有意義,但不在TCP之上,這應該保證消息的可靠傳輸)http:// http:// help.adobe.com/en_US/as3/dev/WSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html – shaunhusain 2012-01-30 21:57:51

回答

0

試試這個代替;

socket.writeUTFBytes(m + String.fromCharCode(0)); 
socket.flush();