我编写了一个测试应用程序来获取我网络上的所有活动端口。做了一些搜索,发现这是最简单的方法。所以我试了一下,它工作得很好。然后我编写了另一个带有服务器和客户端的套接字应用程序。它非常基本,有一个创建服务器、加入服务器和刷新按钮来获取活动服务器。唯一一次调用此方法是在您按下刷新按钮时。如果我打开应用程序 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;
}
这是异常的屏幕打印: