首页 > 解决方案 > Unity TCP/IP 服务器只接受本地连接。同一台 PC 上的相同代码而不是 Unity 可以正常工作

问题描述

当我从 Unity 项目内部和普通 Visual Studio 项目在同一台 PC 上运行完全相同的代码时,我会得到 TCP/IP 服务器的不同结果。请注意,这些端口已在防火墙中显式打开。

代码如下:

 IPAddress localAddr = IPAddress.Any;
 var s_server = new TcpListener(localAddr, port);
 s_server.Start();
 TcpClient socket = s_server.AcceptTcpClient();

而已。相同的代码在位于同一台 PC(Windows 10 家庭版)上的独立服务器中工作,但在 Unity 内部时不接受任何连接。有趣的是,Unity 确实接受同一端口上的本地连接。

我还尝试添加一些 Unity 特定代码,例如:

    Network.InitializeServer(16, port, false);

但这没有帮助。任何线索在 Unity 中有什么特别之处以至于它不允许来自本地主机的连接?

谢谢, 瓦西里

标签: c#unity3dtcptcp-iptcpserver

解决方案


tcplistener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

您可能需要在 Unity 中将其设置为可重用。


推荐阅读