关于NetworkStream发送读取数据丢包的问题

七伤拳 2005-05-06 05:13:48
客户端为PDA,发送数据代码段如下:

// 发送数据
string sXML = cmd.ToXMLString();
Byte[] data = System.Text.Encoding.Unicode.GetBytes(sXML);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
stream.Flush();


服务器端为PC机,接收代码段如下:
cpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();
Byte[] buffer = new Byte[1024];
String sXML = "";
int totalRead = 0;
int numberOfBytesRead = 0;
do
{
numberOfBytesRead = stream.Read(buffer, 0, buffer.Length);
sXML = String.Concat(sXML, Encoding.Unicode.GetString(buffer, 0, numberOfBytesRead));
totalRead += numberOfBytesRead;
}
while (stream.DataAvailable);


现在有个问题,客户端发送600字节的数据,服务器有时能完整的接收下来,有时却只接收到部份,如536字节。在数据小于200字节的情况下每次都能完整接收下来,数据量稍一大就会有问题。

搞不清楚问题的原因在哪里,服务器端开了1024字节的缓冲区,比数据量要大的,怎么还会出现数据不完整的现象啊?
...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfengnet 2005-07-31
  • 打赏
  • 举报
回复
我也遇到了你相同的问题,我的接收断用C++ Socket编写的,也同样丢失数据
ycy589 2005-05-07
  • 打赏
  • 举报
回复
顶!!!
七伤拳 2005-05-06
  • 打赏
  • 举报
回复
还有一点很奇怪,同样的数据往往是中断在同一个地方,比如600字节,服务器出错时每次都只读出536字节,还挺有规律。但是客户端调试确实是发送了600字节的。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧