我正在尝试使用 Peer to Peer 将 Internet 上的网络添加到我的游戏中。我已经实现了一个仅限 LAN 的版本,它使用 .NET 的点对点类在本地网络中进行连接。
我意识到我需要使用 UDP 打孔来建立与防火墙后面的其他客户端的连接。
这就是我开始实现它的方式:服务器是一个 HTTP 服务器,使用非常简单的 PHP 脚本来完成工作。
- 在服务器上注册名称,将私有 IP 地址和端口作为 GET 变量发送
- 当服务器收到注册请求时,它将保存公共端点和私有端点
- 请求连接到另一个客户端。
- 服务器将返回客户端的私有和公共端点
- 每两秒,第二个客户端将与服务器签入,如果有另一个客户端尝试与它连接,它也会得到它的端点
- 两个客户端都开始向对方的公共端点发送垃圾邮件,直到他们得到有效的响应
现在我有一堆问题
- 服务器可以是 HTTP 服务器吗?
- 当我向 HTTP 服务器发出请求时,每次发出请求时客户端端口都会更改。私有端点是否总是与同一个公共端点匹配?
- 对服务器的请求是否必须与发送给客户端的 UDP 消息具有相同的源端点?
- 有没有办法使用指定的源端点连接到 C# 中的 HTTP 服务器?
- 我的实施有什么问题吗?
谢谢!