“System.Net.Sockets.SocketException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
这个异常表示端口已经被占用了,需要释放端口或者使用其他端口来建立连接。您可以尝试以下两种方法来解决这个问题:
-
关闭占用端口的应用程序:您可以通过查看端口占用情况来确定是哪个应用程序占用了该端口,然后关闭该应用程序。在 Windows 系统中,您可以使用命令行工具
netstat
来查看端口占用情况,例如输入netstat -ano | findstr :12345
来查看 12345 端口是否被占用,并查看占用该端口的进程 ID。然后,您可以使用任务管理器或者命令行工具taskkill
来结束该进程。 -
更改程序使用的端口:如果您无法关闭占用端口的应用程序,或者您不想关闭该应用程序,那么您可以尝试将程序使用的端口更改为其他未被占用的端口。在您的代码中,您可以将以下两行代码中的端口号改为其他值:
int localPort = int.Parse("12345");
int remotePort = int.Parse("12345");
您可以将这两个端口号更改为其他未被占用的端口号,例如 23456、34567 等。然后,您需要确保远程主机也使用相同的端口号来建立连接。如果您无法控制远程主机的端口号,那么您需要与远程主机的管理员联系,请求他们将端口号更改为与您使用的端口号相同的值。
最终解决
int localPort = int.Parse("12346");
int remotePort = int.Parse("12345");