日期:2014-05-17  浏览次数:21087 次

用Socket 做的一个聊天小程序,为什么总是丢包,如何解决
为了学习Socket,从网上down了一下实例,进行调试学习,程序很简单,就是服务端和客户端进行对话聊天,但是发现在连续发送内容时,有的信息收不到,没有反应。这是怎么回事,是不是传说的丢包问题,怎样才能解决,实现稳定的对话。
不是都收不到,现在是不稳定,快速输入,点发送,有的能收到,有的就收不到。
谢谢

------解决方案--------------------
这种代码.........到处都是惨不忍睹的。

随便找一个吧,
string strData = string.Format("{0}", Encoding.UTF8.GetString(bytes));

这里bytes中只有前buffer个字节是你接收到内容,怎么能把整个bytes作为接收到的内容呢?
------解决方案--------------------
再比如说吧,你的所谓“服务器端”仅仅在Form初始化时
ServerSocket.Listen(20);
ClientSocket = ServerSocket.Accept();
ServerReceiveData();

而你的所谓“客户端”则是每当btnClientSend_Click时弄个所谓线程去单独调用ClientSendData,这能够让你服务器获得第二个会话?晕啊。

我不知道你从哪里抄来的代码。我建议你把这些代码简化到20行以内(只要了解必要的几行代码就够了),或者干脆删除(另外找人学习)。

另外请告诉我你是从哪里抄来的代码?这其实很重要。我们可以知道这是哪一个坑人的培训学校的教学。