Unity TCP / IP服务器仅接受本地连接。同一台PC上的同一代码不在Unity上正常

时间:2018-10-12 17:36:12

标签: c# unity3d tcp tcp-ip tcpserver

当我从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 Home)上的独立服务器中工作,但是在Unity内时不接受任何连接。有趣的是,Unity确实在同一端口上接受本地连接。

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

    Network.InitializeServer(16, port, false);

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

谢谢, 瓦西里

1 个答案:

答案 0 :(得分:0)

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

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