2010-02-11 30 views
1

我正在使用套接字编程的一个项目,但是当使用相同套接字多次时,即使在关闭listener()每次我用插座:当我运行应用程序它给人的错误:通常只允许使用每个套接字地址(协议/网络地址/端口)

Only one usage of each socket address (protocol/network address/port) is normally permitted

我真的很担心。有人可以帮我吗?


下面是代码,我使用,我关闭所有连接是否正确

 TcpClient tcpClient; 
     TcpListener tcpListener; 
     byte[] ipaddress = new byte[4]; 
     string ip = ConfigurationManager.AppSettings["IP"].ToString(); 
     string[] ips = ip.Split('.');    
     ipaddress[0] = (byte)Convert.ToInt32(ips[0]); 
     ipaddress[1] = (byte)Convert.ToInt32(ips[1]); 
     ipaddress[2] = (byte)Convert.ToInt32(ips[2]); 
     ipaddress[3] = (byte)Convert.ToInt32(ips[3]); 
     int portNumber = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]); 
     tcpListener = new TcpListener(new IPAddress(ipaddress), portNumber); 
     tcpListener.Start(); 
     tcpClient = new TcpClient(); 
     tcpClient.NoDelay = true; 
     try 
     { 
      tcpClient.ReceiveTimeout = 1; 
      tcpClient = tcpListener.AcceptTcpClient(); 
     } 
     catch (Exception ex) 
     { 
      tcpClient.Close(); 
      tcpListener.Stop(); 
     } 
     NetworkStream networkStream = tcpClient.GetStream(); 
     byte[] bytes = new byte[networkStream.Length]; 
     try 
     { 
      networkStream.ReadTimeout = 2000; 
      networkStream.Read(bytes, 0, bytes.Length); 
     } 
     catch (Exception ex) 
     { 
      tcpClient.Close(); 
      tcpListener.Stop(); 
     } 
     string returndata = Encoding.Default.GetString(bytes); 
     tcpClient.Close(); 
     tcpListener.Stop(); 

     return returndata; 
+0

你能发表一些代码和你看到的错误吗? – 2010-02-11 16:24:54

+0

你已经在这里问过这个问题:http://stackoverflow.com/questions/2240990没有答案解决你的问题? – dtb 2010-02-11 16:51:21

回答

1

你确信你选择一个端口是唯一正确的?

您是否试过只使用一次端口?

确保您在重新打开套接字之前真正处理连接对象等。很难知道没有更多的实施细节。

相关问题