如果您要阅读此书,我想告诉您我是网络领域的新手,所以我说的很多内容可能没有道理。
我正在使用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
在示例中,ip
是127.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是骗子,要么是某种安全措施?
以下是我为使它正常工作所做的所有事情:
似乎许多面对与我相同的问题的人已经通过添加基本的安全组规则解决了该问题,但这并没有为我解决。我有一种感觉,我正在使用的库可能有一些奇怪的安全性问题,可能与我的IP或某些东西(只是一种想法)搞混了。我已经尝试过了解CreateServer
函数的作用,并且似乎应该可以正常工作,因此可能还有其他问题。我真的不知道该怎么办,我可能不得不放弃这一点,然后去另一个协议库,看看我是否可以连接。