tcp/ip通信 读取数据时,如何判断是超时?

troubleren6 2010-09-16 02:01:27
我现在做一个程序,是客户端连接服务器端,客户端往服务器端发送一条命令,然后从服务器端接收到这条命令所对应的数据。要求如果发送命令后,10秒钟内接收到对应的数据算是正常数据,如果超过10秒钟是延迟数据,如果超过10秒没接收到数据就重发这条命令,然后在等待10秒,如果在第二次10秒钟内接收到第一次发的命令所对应的数据,也算延迟数据。一条命令最多发2遍,延时数据不要,只要正常数据。

我想知道怎么来用代码来控制10秒钟一读取数据?
我现在用NetworkStream的read方法来读取数据,如果一直没有数据,那么程序执行到read方法后就一直死在那了,有什么方法能实现我上面说的那些功能,如果超过10秒就中断read方法,继续发送命令,在执行read
...全文
382 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 2010-09-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 troubleren6 的回复:]
sendtimeout和receivetimeout怎么设定?如果一直接收不到数据怎么办?
[/Quote]
如果是阻塞模式,一直收不到,就一直阻塞在那里,
troubleren6 2010-09-16
  • 打赏
  • 举报
回复
sendtimeout和receivetimeout怎么设定?如果一直接收不到数据怎么办?
云瑀 2010-09-16
  • 打赏
  • 举报
回复
设定sendtimeout跟receivetimeout?
不然就是你在送出数据的时候,同时附上送出的时间
那接收端就看接收到的时候是否超时,这样就可以了
troubleren6 2010-09-16
  • 打赏
  • 举报
回复
恩,我知道,如果要不发生假死的状况肯定需要放到线程中的,问题是那线程中怎么判断呢?放在哪也是我写啊!
ztenv 2010-09-16
  • 打赏
  • 举报
回复
read和send是要放到线程中去的;
另外,超时是你业务上的判断了,所以放到线程中去判断吧;

110,561

社区成员

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

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

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