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(); //关闭监听,释放端口
|