c# - 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 中有什么特别之处以至于它不允许来自本地主机的连接?
谢谢, 瓦西里
解决方案
tcplistener.Server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
您可能需要在 Unity 中将其设置为可重用。
推荐阅读
- reactjs - 在本地部署 React App - localhost 拒绝连接
- drupal-console - console.site_install - 您请求了一个不存在的服务“extension.list.module”。在 Drupal 控制台中
- .net-core - .net 核心包和对 .net 运行时的依赖
- ionic-framework - Agora Video Sdk 本地视频不可见 只有连接的客户端视频可见 没有两种方式可见
- python - Python双重导入奇怪的行为
- google-chrome-devtools - 检查 firefox devtools 扩展
- flutter - 使用 Flutter 2.0 / Dart 12 在 flutter_openvpn 中构建 win32 插件错误
- microsoft-graph-api - 读取 MS Graph 中的所有组需要什么权限
- react-admin - 如何设置由 FieldTitle 组件为验证 = {required()} 字段添加的星号颜色
- azure-cosmosdb - 使用 RBAC 在 Azure Cosmos DB 帐户中创建数据库