2012-01-30 134 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();