2

我编写了一个测试应用程序来获取我网络上的所有活动端口。做了一些搜索,发现这是最简单的方法。所以我试了一下,它工作得很好。然后我编写了另一个带有服务器和客户端的套接字应用程序。它非常基本,有一个创建服务器、加入服务器和刷新按钮来获取活动服务器。唯一一次调用此方法是在您按下刷新按钮时。如果我打开应用程序 3 次或更多次,并在第 4 次之前创建具有连接客户端的服务器,则此方法开始给我此(未知错误(0xc0000001))错误。知道为什么会发生这种情况吗?有趣的是我从来没有在最初的申请中得到这个,我第一次打开的那个。我不知道它是否以某种方式锁定了这个或什么。

在这一行抛出异常:

IPEndPoint[] endPoints = properties.GetActiveTcpListeners();

这是方法,它为最小和最大范围内的所有端口返回一个 List 对象。

public static List<UserLocalSettings> ShowActiveTcpListeners(int min, int max)
{
    List<UserLocalSettings> res = new List<UserLocalSettings>();
    try
    {
        IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
        IPEndPoint[] endPoints = properties.GetActiveTcpListeners();
        foreach (IPEndPoint e in endPoints)
        {
            if (e.Port > (min - 1) && e.Port < (max + 1))
            {
                UserLocalSettings tmpClnt = new UserLocalSettings();
                tmpClnt.player_ip = e.Address.ToString();
                tmpClnt.player_port = e.Port;
                tmpClnt.computer_name = Dns.GetHostEntry(e.Address).HostName;
                res.Add(tmpClnt);
            }
        }

    }
    catch (Exception ex1)
    {
    }
    return res;
}

这是异常的屏幕打印:

http://i.stack.imgur.com/bttxk.gif

4

0 回答 0