大家好,我现在遇到了这样的问题,就是当端口已经打开时,会报这个错误:System.Net.Sockets.SocketException: 通常每个套接字地址 (协议/网络地址/端口) 只允许使用一次我想在新建socket时,能不能先进行判断,如果我要用的端口如10001已经打开,我就关闭它然后再执行程序,不知道这如何实现?以下是我的程序:private static IPAddress LocalAddress = IPAddress.Parse("10.10.82.18"); 
private static int LocalPort = 10001;
    
private void Send( String message) 
{
UdpClient sender = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(GroupAddress,GroupPort);

try 
{
        byte[] bytes = Encoding.ASCII.GetBytes(message); Socket server= new                   Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); IPEndPoint ipep = new IPEndPoint(LocalAddress,LocalPort);

server.Bind(ipep);//这里报的错
                ...
                ...
         }
         catch (Exception e)
         {
         }

解决方案 »

  1.   

    如果是别的应用打开的,是不能关闭的吧否则,你直接找到那个打开端口的socket,然后close不就OK了
      

  2.   

    你是在send里进行的端口邦定,也就是每次执行send方法时就会建立一个socket,如果没有在退出send时关闭socket,就会报错了。建议你:不要每次都建立socket,而是在程序一开始就建好,然后每次在send里使用,程序结束要关闭socket。对于现在的代码你写的不全,可以在catch后加上
    finally
    {
        server.Close()
    }
    试试,保证一定关闭socket。