TcpClient的ReceiveTimeout的问题

Q:

我实现的是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++;
}

 

 

A.

NetworkStream有个DataAvailable只读属性
当第一次read失败后,该属性会自动变为false
所以循环体应该改为
while(i <3)
{
    if(DataAvailable)
    {
        int   bytesRead   =   _stream2Server.Read(_buffer,   0,   _buffer.Length);
        i++;
    }
    else
        sleep(3000);
}

转载于:https://www.cnblogs.com/alon/archive/2009/04/07/1431293.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值