TCPClient编程中,NetStream写超时没有作用?

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分钟。请问是什么原因啊?为什么超时没有作用呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值