如何使用Unity-Netcode.IO连接到我的ec2实例IP地址?

时间:2018-07-22 20:57:52

标签: sockets unity3d amazon-ec2

如果您要阅读此书,我想告诉您我是网络领域的新手,所以我说的很多内容可能没有道理。

我正在使用this library将游戏联网,并且在localhost上运行良好。在文档中说:

var server = UnityNetcode.CreateServer(
ip,     // string public IP clients will connect to
port,       // port clients will connect to
protocolID, // ulong number used to identify this application. must be the same as the token server generating connect tokens.
maxClients, // maximum number of clients who can connect
privateKey );   // byte[32] private encryption key shared between token server and game server

在示例中,ip127.0.0.1。从文档中,如果我想连接到服务器,我想应该将其设置为ec2实例的公共IP地址吗?在深入研究了函数实际调用的内容之后,似乎正在使用System.Net.Sockets。那么ip是侦听器的终结点?根据我在服务器方面的经验,您将侦听器的IP端点设置为服务器将允许/识别的IP地址范围,而不是服务器的公共IP。为了进一步使我相信自己是正确的,如果我将其设置为公共IP,则会抛出一个错误,提示socketexception the requested address is not valid in its context

因此,我将ip设置为0.0.0.0,并且没有出错,但是它甚至没有在localHost上连接,因此我不必费心在服务器上尝试。当我运行服务器exe并运行netstat时,我可以看到UDP 0.0.0.0:3813 *:*(3813是我的端口)。那我不应该可以连接到它吗?

总结所有这些:

我很困惑,不知道使用ip参数的正确方法。

____________________________________编辑:_______________________________________

This post几乎澄清了我对ip参数的疑问。 我的客户端仍然无法连接到服务器,但我认为要么library是骗子,要么是某种安全措施?

以下是我为使它正常工作所做的所有事情:

  • 为我的端口添加了AWS安全组规则(我最终尝试启用所有流量/地址/端口),以进行入站/出站连接
  • 在本地计算机和远程ec2实例上禁用防火墙
  • 将远程ec2实例上的服务器设置为侦听0.0.0.0:3813
  • 将客户端设置为在端口3813上连接到与我的ec2实例相关联的aws弹性ip
  • 在ec2实例上运行netstat并确认它正在侦听0.0.0.0:3813
  • ping我的ec2实例弹性IP,以查看是否能够通过它
  • double(triple)检查了以上所有内容

似乎许多面对与我相同的问题的人已经通过添加基本的安全组规则解决了该问题,但这并没有为我解决。我有一种感觉,我正在使用的库可能有一些奇怪的安全性问题,可能与我的IP或某些东西(只是一种想法)搞混了。我已经尝试过了解CreateServer函数的作用,并且似乎应该可以正常工作,因此可能还有其他问题。我真的不知道该怎么办,我可能不得不放弃这一点,然后去另一个协议库,看看我是否可以连接。

0 个答案:

没有答案