|
|
1
7
IM程序不需要任何打开的端口,因为它们是客户端程序。作为一般规则(注意出站防火墙),所有端口都为客户端上的出站连接打开。为了实际 接受 连接,端口必须允许传入流量。例如,大多数服务器可以接受所有端口上的传入流量。网络通信和协议的设计要考虑到这一点:客户机(您的浏览器)总是启动到服务器(网站)的连接,而不是反过来。 对于协议,您应该使用TCP/IP或UDP,这取决于您需要做什么。如果你计划让你的客户端使用近似(大多数fps游戏都这样做,以及几乎所有需要快速反应的游戏),其中TCP/IP更简单,将大大减少传输中的错误,并且更容易出现延迟,那么udp是非常棒的。两者之间的主要区别在于,UDP是“发射并忘记”,这意味着它不需要检查消息是否真的到达了目的地。 至于上面的协议,您提到了HTTP和FTP。我非常建议两者都不要用。当您在自定义端口上使用直接套接字通信时,您可以自由地为游戏制定自己的协议。只要它通过来回发送数据包来完成它的工作,关于它的其他一切都完全取决于您,并且应该是。毕竟,游戏协议需要 快速的 ,除非您真的需要,否则您不希望来自HTTP的所有额外头垃圾阻塞您的网络传输。 记住:网络连接需要两个部分,一个客户机和一个服务器。这意味着你要么有一个为游戏设置的中央服务器,要么你有一个玩家“主机”游戏(作为服务器,他需要打开他的端口)。其他玩家(所有玩家,在中央服务器设置中)连接到中央人,并通过他进行通信。这意味着你的游戏协议需要两部分,一个服务器端和一个客户端。大多数游戏中的客户机都是盲运行的,因为它发送用户的玩家信息,然后依靠服务器更新来告诉它游戏中的其他东西在哪里。服务器应该负责从所有客户机收集玩家信息,然后将这些信息分发给其他人。这可以包括验证(大多数操作)来防止“非法”事件在游戏中发生,但这取决于您自己。 |
|
|
2
1
这个问题比使用一个特定的端口或协议来通过一个NAT要复杂一些。你可以得到 more information here. |
|
|
3
0
一些路由器可以处理开放端口的UPNP请求。 |
|
|
4
0
大多数多人游戏使用的是UDP,端口也各不相同,有些游戏比其他游戏需要更多的端口。服务器端往往需要转发打开的端口。 显然,为了做到这一点,您将深入研究套接字编程。 玩得开心: |
|
|
5
0
另一个udp优势和防火墙技巧是,对于大多数防火墙,如果内部客户端发送一个udp包,防火墙会在外部打开一个udp端口,该端口可以接受外部包并将其转发回源。 因此,如果您的所有客户机都将UDP发送到一个中央服务器,那么该服务器可以收集所有的UDP端口信息并将其发送回每个客户机(再次通过UDP)。然后,每个客户机向彼此的客户机发送一个UDP包,以打开防火墙端口。这允许每个客户机直接与其他客户机交谈,而不是通过服务器。它仍然需要一个服务器,每个客户机都可以将其用作会议点。 Skype和其他IM协议以及一些需要p2p访问的BitTorrent客户机都使用了这个技巧。 它的一个问题是,所有的流量都是UDP,这使得连接不可靠,因此如果需要可靠性,您需要通过它实现自己的TCP版本。我相信有一些图书馆可以做到这一点。或者你也可以运行类似openvpn的程序,尽管这对于一个游戏来说似乎是多余的。 |