NetworkStream Read问题,奇怪了!!!

DotCpp 2014-07-31 10:20:49
情况是这样的:我设置一个SOCKET服务器,读客户端来的数据,设的ReadTimeout为10毫秒,客户端每500毫秒发一次数据过来,按理说当执行Read的时候,每次都应该因为超时进入到catch中,但竟然都正常执行到if(bytesRead>0)这段了,这....为什么?


_networkStream.ReadTimeout = 10; //读10毫秒超时



try
{
Debug.WriteLine("Start Read:" + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff"));
int bytesRead = _networkStream.Read(_bytes, 0, (int)_bytes.Length);
Debug.WriteLine("End Read:" + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff"));
if (bytesRead > 0)
{
_recvStr.Append(Encoding.ASCII.GetString(_bytes, 0, bytesRead));
}
else
{
//SOCKET可能被关闭
Close();
}
}
catch (IOException exception)
{
//超时,处理_recvStr串
}


执行结果:
Start Read:07/31/2014 10:11:37.999
End Read:07/31/2014 10:11:38.497
正好就是客户端来数据的500毫秒。。。。
...全文
353 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wastingtime 2014-08-03
  • 打赏
  • 举报
回复
奇怪了~三大赛
CGabriel 2014-08-01
  • 打赏
  • 举报
回复
这个解决不了粘包问题
Johnyin 2014-07-31
  • 打赏
  • 举报
回复
这个Timeout属性表示读取操作失败前经过的时间,你一直能读取成功(无论有无数据)的话,它应该不会超时。。。
DotCpp 2014-07-31
  • 打赏
  • 举报
回复
引用 1 楼 Johnyin 的回复:
这个Timeout属性表示读取操作失败前经过的时间,你一直能读取成功(无论有无数据)的话,它应该不会超时。。。
那如何处理?google了半天,无解呀~~~~ 主要是解决粘包的问题

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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