奇怪的tcpclient错误.头大死了。在线等
我用tcpclient做了个登陆 公司邮件服务器的程序(如上图)。
点击connect 按钮后连接,然后调用close释放连接 后退出。
我本机有2个IP,需要指定一个IP(192.168.1.101)发送。
采用如下代码bind绑定到本地。
  IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("192.168.1.101"), 25);
  myServer = new TcpClient();
  myServer.Client.Bind(ipPoint);  
奇怪的事情发生了,当代码执行完一遍后,马上再按连接按钮,
出现 通常每个套接字地址(协议/网络地址/端口)只允许使用一次 的异常提示。
如果中间停止1-2分钟再点击连接,就不会出现这个问题。
查了很多资料。说是连接还没来得及放掉,要等。
但是如果把 myServer.Client.Bind(ipPoint); 即绑定这句去掉,
就不需要等待。好像close一执行就把所有资源放掉了。
但是我们必须在使用tcpclient时指定本地IP,怎样可以避免那个异常?
以下为代码部分。
  IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("192.168.1.101"), 25);
             TcpClient myServer = null;
             NetworkStream myNetStrm = null;
             StreamReader myRdStrm = null;
             try
             {                 
                 myServer = new TcpClient();
                 myServer.Client.Bind(ipPoint);  
                 myServer.Connect("220.181.12.66", 25);                 
                 myNetStrm = myServer.GetStream();
                 myRdStrm = new StreamReader(myServer.GetStream());
                 textBox1.AppendText(myRdStrm.ReadLine()+"\r\n") ;
             }
             catch (Exception ex)
             {
                 textBox1.Text =  ex.Message ;                  
             }
             finally
             {
                 if (myNetStrm != null) { myNetStrm.Close(); myNetStrm = null; }
                 if (myServer != null) { myServer.Close(); myServer = null; }
             }
------解决方案--------------------
监听服务是进程级的,如果弄成界面上“一会儿监听、一会儿close、一会儿又监听”,那就成了网上的一些培训“教师”写的根本不是产品中使用的demo代码的。