我正在使用一个名为Lidgren network的库来处理我的应用程序的所有网络部分。它使用UDP。
我从来没有遇到过 TCP 应用程序和端口转发(apache、FTP、SMTP 等)的任何问题。我使用 TCP 做了一些 TCP 应用程序,我可以毫无问题地连接。
我现在正在制作一个在线游戏,我使用 UDP 进行网络传输。我在我的路由器中端口转发它,我让它运行。当我使用我的远程 IP 地址 (190.136.243.40) 连接到它时,我不能。当我使用环回(127.0.0.1)时,我可以毫无问题地连接。
我关闭了 Windows 防火墙,我重新启动了计算机,但我仍然无法使用我的远程 IP 地址进行连接。
这是我的代码的一部分:
public static class ServerInfo
{
static ServerInfo()
{
ServerAddress = Dns.GetHostAddresses("leboran.dyndns.org")[0];
}
public const short Port = 6483;
public static IPAddress ServerAddress;
public const string AppIdentifier = "UnnamedGameNet";
public static byte[] MagicByte
{
get
{
return new byte[4] { 0xF1, 0x64, 0x83, 0xC4 };
}
}
}
这是我启动服务器的部分,可能并不重要:
public void StartServer()
{
this.listenThread = new Thread(ListenForClients);
peerConfig = new NetPeerConfiguration(SharedConstants.ServerInfo.AppIdentifier);
peerConfig.Port = SharedConstants.ServerInfo.Port;
peerConfig.EnableMessageType(NetIncomingMessageType.DiscoveryRequest);
peerConfig.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
peerConfig.ConnectionTimeout = 2144124;
netServer = new NetServer(peerConfig);
listenThread.Start();
}
我使用的端口是 6483。我在端口 25565 上运行 Minecraft 服务器,它运行良好,因此在路由器上配置不错