アプリケーションのすべてのネットワーク部分を処理するLidgren ネットワークと呼ばれるライブラリを使用しています。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 サーバーを実行していますが、これは完全に動作するため、ルーターの構成に問題はありません。