C# Socket编程中,用了TcpClient类,碰到一个问题:
this.tc = new TcpClient();
tc.ReceiveBufferSize = 8192;//8192是默认值
tc.SendBufferSize = 8192;//8192是默认值
tc.NoDelay = true;//没有延时
//tc.LingerState = new System.Net.Sockets.LingerOption(false, 0);
//tc.ExclusiveAddressUse = false;
tc.ReceiveTimeout = tc.SendTimeout = 60 * 1000;//60s接受超时,60s发送超时!
//连接主机*********************
tc.Connect(this._Host, this._Port);//建TcpClient连接
myEventLog.Log.Info("socket连接成功!");//语句A
//建立连接后获取网络流
this._NetworkStream = tc.GetStream();
this._NetworkStream.CanTimeout = true;
//网络流的写超时时间必须设置,单位是毫秒。否则,默认是“无超时”。多线程的情况下异常!2009-11-29日 王卫民
this._NetworkStream.WriteTimeout = 60*1000;
this._NetworkStream.ReadTimeout = 60*1000;;
byte[] bytes = connect.ToBytes();//一个连接消息,字节数组
//写网络流数据
this._NetworkStream.Write(bytes, 0, bytes.Length);//我怀疑这条语句执行了很久,但是找不到理由啊!!!!!!!!!!!!!!!!!!!!!!!!
int iSpan = 0;
int waitcount = 500;
while (!_NetworkStream.DataAvailable)//等待RESPONSE 5秒
{
Thread.Sleep(10);
iSpan++;
if (iSpan > waitcount)
{
throw new Exception("等待CONNECT_RESP超时!");//语句B
}
}
#endregion
语句A执行后,执行到语句B用了55分钟。请问是什么原因啊?为什么超时没有作用呢?