websocket的實例:http://blog.csdn.net/for_cxc/article/details/51500185
問題: 新建一個連接通信沒有問題,但是如果關閉再建立就會報錯:通常每個套接字地址(協議/網絡地址/端口)只允許使用一次
解決方案:
源碼:
1 int port = 1818; 2 byte[] buffer = new byte[4096]; 3 4 IPEndPoint localEP = new IPEndPoint(IPAddress.Any, port); 5 Socket listener = new Socket(localEP.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp); 6 try 7 { 8 listener.Bind(localEP); 9 listener.Listen(10); 10 sc = listener.Accept();//接受一個連接 11 //握手 12 int length = sc.Receive(buffer);//接受客戶端握手信息 13 //sc.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); 14 listener.Close(); //關閉監聽,釋放端口 15 sc.Send(PackHandShakeData(GetSecKeyAccetp(buffer, length)));
原因是建立連接時候的監聽沒有關閉,所以端口沒有釋放。
重點:
listener.Close(); //關閉監聽,釋放端口