TcpClient的ReceiveTimeout的问题!急!

yuye_yuye 2007-08-09 07:48:34
我实现的是read函数一个数据在规定的时间内(ReceiveTimeout )没有得到数据,就循环read三次。本来期望每次read函数都能等待ReceiveTimeout这个时间。
但是实际情况是只有第一次等待了这么长时间,以后的read就马上返回,还提示没有读到数据。请高手解答。急!!ReceiveTimeout这个属性到第二次怎么就失效了呢?
我的代码大概是:
TcpClient _tcpsocket = null;
NetworkStream _stream2Server;
_tcpsocket = new TcpClient(BHSServerName, BHSServerPort);
_tcpsocket.ReceiveTimeout = BHSWaitPRTimeOut;
_stream2Server = _tcpsocket.GetStream();
int i = 0;
byte[] _buffer = new byte[200];
while(i<3)
{
int bytesRead = _stream2Server.Read(_buffer, 0, _buffer.Length);
i++;
}
...全文
994 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuye_yuye 2007-08-20
  • 打赏
  • 举报
回复
这个问题还是我自己来解答吧
NetworkStream有个DataAvailable只读属性
当第一次read失败后,该属性会自动变为false
所以循环体应该改为
while(i<3)
{
if(DataAvailable)
{
int bytesRead = _stream2Server.Read(_buffer, 0, _buffer.Length);
i++;
}
else
sleep(3000);
}
yuye_yuye 2007-08-10
  • 打赏
  • 举报
回复
现在的最新发现是第一次timeout完毕,第二次重读的时候会产生“无法从传输连接中读取数据: 无法立即完成一个非阻挡性套接字操作。”的异常 属于IOException
请问各位高手就没遇到过这个问题么?谢谢了!!
我把希望寄托在你们这了!
我马上就要出差解决这个问题了
yuye_yuye 2007-08-09
  • 打赏
  • 举报
回复
可能也是这个原因,不能连续读,但是怎么实现我这个功能呢?
在不重新建立socket的情况下?
因为我要重读三次,才重连socket !!
谢谢,兄弟们@@ 急呀!
wl19861202 2007-08-09
  • 打赏
  • 举报
回复
可以看看MSDN~~~
wl19861202 2007-08-09
  • 打赏
  • 举报
回复
read 可以连续读么?
yuye_yuye 2007-08-09
  • 打赏
  • 举报
回复
再等!急呀
yuye_yuye 2007-08-09
  • 打赏
  • 举报
回复
再问,再等!!
showmy 2007-08-09
  • 打赏
  • 举报
回复
jf up 学习
yuye_yuye 2007-08-09
  • 打赏
  • 举报
回复
为什么没有人回答我?在线等。急!

110,533

社区成员

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

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

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