我最近正在尝试新的统一网络解决方案,即游戏对象的网络代码。在Unity中,我尝试使用网络代码作为游戏对象制作一个简单的游戏,其中包括服务器和连接到服务器的客户端。我能够制作一个简单的游戏,我的服务器正在监听 “0.0.0.0:55000”,我的客户端能够连接并发送 RPC。所以,现在一切都很顺利,并且在我的本地计算机上一切正常。
所以,现在我决定在远程服务器中运行我的 Unity 游戏服务器并尝试从本地计算机进行连接。但是,我无法连接到远程服务器。我尝试了很多方法,但无法连接到我的远程托管服务器。
所以,我想向您提供有关我的服务器设置的信息。因此,我使用“AWS EC2 实例 Amazon Linux Server”作为我的游戏服务器。我已经构建了一个“Linux 平台专用服务器构建” 从我的 Unity 编辑器作为 X86 文件,我已使用 FileZilla 将所有文件传输到我的 aws 服务器。
然后,我尝试运行我的服务器,运行良好。它运行良好,我通过在我的亚马逊 Linux 服务器上使用“netstat”命令检查所有网络端口和连接数据来确认这一点。我使用命令“netstat -ltu -pt”,我能够看到在 TCP“0.0.0.0:55000”上运行和侦听的 Unity 游戏服务器的名称。
我还使用 aws 上的安全设置允许来自服务器上任何来源的端口“55000”上的入站 TCP 请求。
但是,当我尝试从本地计算机连接到我的服务器时,由于某种原因它无法连接。
所以,**请帮助我......为什么我无法连接到我的服务器????????????**
我想确认的第一件事是,我的远程服务器是否可以从任何地方访问?
所以,我从我的本地Windows机器上的命令提示符中执行了telnet“远程服务器的ip地址”“55000”,并且我能够确认我的端口已打开,因为我没有收到任何“无法连接到服务器”消息.
我还尝试使用 POSTMAN 在远程服务器上执行 http post 请求,并且我能够得到 服务器上的消息,该消息是我所期望的 courrpt 消息,因为我尝试向我的游戏服务器发出 http post 请求,该服务器不处理任何 htttp 请求。
这是我在游戏服务器控制台上收到的消息“消息标头已损坏,出于安全原因,连接将被终止”。
根据我所做的上述实验,我能够确认我的远程服务器端口已打开并且可以被任何人访问。
但我仍然无法从本地 Windows 计算机连接到 AWS 上托管的远程 Unity 游戏服务器..
我现在完全不知道该怎么办.....请给我解决方案
看来您已经进行了彻底的调查,并且很高兴您已经通过使用 telnet 并发出 HTTP 请求来验证 AWS 服务器的可访问性。
以下是一些可能帮助您排除故障和识别问题的其他步骤和注意事项:
AWS 上的防火墙配置:
仔细检查 AWS EC2 实例上的安全组设置。确保入站规则允许端口 55000 上的流量。 确认您的 AWS EC2 实例上的出站规则没有阻止流量。 检查 Unity 网络设置:
确认您的 Unity 游戏服务器配置为侦听所有网络接口 (0.0.0.0),而不仅仅是本地主机 (127.0.0.1)。 验证您的 Unity 网络代码是否正确绑定到正确的 IP 和端口。 本地计算机上的防火墙:
检查您的 Windows 计算机上是否有本地防火墙可能阻止端口 55000 上到 AWS 服务器的出站连接。 网络地址转换 (NAT):
如果您的 AWS EC2 实例位于 NAT 网关后面,请确保正确转发必要的端口。 公共 IP 与私有 IP:
确保在尝试从本地计算机连接时使用 AWS 实例的公共 IP 地址。 AWS 实例同时具有私有和公共 IP 地址。 Unity远程访问测试:
尝试在本地计算机上运行一个简单的 Unity 服务器,看看是否可以从 Windows 计算机连接到它。这可以帮助确定问题是特定于 AWS 设置还是更一般的网络问题。 检查 Unity 日志:
查看 Unity 游戏服务器生成的日志,查找可能表明问题根源的任何错误消息或警告。 网络监控工具:
考虑使用 Wireshark 等网络监控工具来捕获和分析本地计算机与 AWS 服务器之间的网络流量。这可以帮助确定连接尝试是否到达服务器以及通信是否存在任何问题。 AWS EC2 实例日志:
检查 AWS EC2 实例上的日志,了解与网络连接相关的任何错误消息或警告。您可以在 /var/log 中找到这些日志。