C#简单问题。
做一个点对点消息传送的程序,在接收的时候总是弹出 "每个套接字地址(协议/网络地址/端口)只允许使用一次 "的异常。有人知道为什么吗?先谢谢了。
------解决方案--------------------private TcpListener tcpl = new TcpListener(ipaddress, port); 
 tcpl.Start();   
 应该是这句重复执行了; 
 解决办法: 
 在每次数据发送完成后: 
 if(tcpl!=null) 
 { 
 tcpl.Stop(); 
 tcpl = null; 
 } 
------解决方案--------------------端口被占了 
 比如你绑了个80 第二次又绑80就不行了
------解决方案--------------------你看一下,可能前面运行的程序没有彻底关闭,仍旧占用的端口,还在监听。 
 在windows任务管理器里面看看进程,断开就好
------解决方案--------------------没看代码 
 应该是 
 private TcpListener tcpl = new TcpListener(ipaddress, port); 
 这句只调用一次就可以了,不能多次绑定的。
------解决方案--------------------是不是 
 AcceptMessage()被多次调用了 
 把 
 private TcpListener tcpl = new TcpListener(ipaddress, port); 
 放到外边尝试一下
------解决方案--------------------我想是因为135端口是为其它服务开放的,所以说,你就不能再在它上面监听了,可以换个端口,尽力去避免那些常用的端口。如1024之后的。应该是可行的,楼主可以试试。
------解决方案--------------------这个问题我遇到过,原因就是在退出程序时没有关闭Socket并释放其占用的资源,这样在下一次启动程序时又要运行 
  // 新建客户端套接字 
                 tcpclnt = new TcpClient(); 
                 tcpclnt.Connect(this.txtIP.Text, 135);                   
                 tcpStream = tcpclnt.GetStream(); 
                 _name = this.txtName.Text; 
                 _ip = this.txtIP.Text; 
                 IsConnection = true; 
                 this.btnSend.Enabled = true; 
                 btnLink.Enabled = false; 
 这样会尝试去绑定已被占用还未释放的Socket,出异常! 
 解决就是在退出程序的事件中调用BreakConnection()