当前位置: 代码迷 >> C# >> 这个异常如何改? socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
  详细解决方案

这个异常如何改? socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次

热度:805   发布时间:2016-05-05 05:15:07.0
这个错误怎么改? socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次
服务器端用的是windows 2003 Server

        private void StartListening()
        {
            try
            {
                //指定的IP地址和端口上是否有传入的连接尝试
                myListener = new TcpListener(IPAddress.Parse(m_serverIP), int.Parse(m_serverPort));
                //监听启动
                myListener.Start();
                //添加说明信息到ListView
                AddListView(string.Format("\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").ToString()
                                            + " 开始在{0}:{1}监听客户端连接", m_serverIP, m_serverPort));

                //监听客户端连接的线程
                Thread myThread = new Thread(ListenClientConnect);
                myThread.Start();
            }
            catch (Exception ex)
            {
                intListenFlag = 0;
                Utility.WriteToTxt("ServerErrorLog.txt", DateTime.Now.ToString() + ":StartListening " + ex.Message);
                //重新启动本程序
                ReStartProgram();
            }
        }


程序运行几天后就报错
“socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次”
端口我是指定的3024, 让客户端去连接服务器端的3024端口,但是运行几天就会报错。
啥原因啊??


------解决思路----------------------
检查代码,看是否多次执行了StartListening
------解决思路----------------------
估计你的ReStartProgram这个流程没有把之前的socket关闭就重新绑定了端口
------解决思路----------------------
那就说明 3024  又一次被使用了。  catch捕获异常后,重新启动之前 没有释放端口。
------解决思路----------------------
ReStartProgram()这个方法看看有没有关闭socket
------解决思路----------------------
退出的时候,监听线程还在,所以没有完全关闭,把监听线程设置为后台线程。程序退出以后。监听线程也退出了。端口就不会被占用。
------解决思路----------------------
检查下是不是下面两种可能:
1、ReStartProgram();的时候,程序进程还在,这就导致出现两个运行的exe
2、代码里面多次调用了StartListening方法
------解决思路----------------------

myListener = new TcpListener(IPAddress.Parse(m_serverIP), int.Parse(m_serverPort));  
myListener.Start();
myListener = new TcpListener(IPAddress.Parse(m_serverIP), int.Parse(m_serverPort));  
myListener.Start();


执行2次 就报错..

所以你自己检查下逻辑吧
  相关解决方案