0

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

4

3 に答える 3

1

一部のコンピューターには複数の IP があり、実際にはそれらすべてが機能します。おそらく経験しているのは、すべての IP をバインドする 64.323.23.234 または理想的には 0.0.0.0 ではなく、ポート 127.0.0.1 をリッスンするようにアプリをバインドしたことです。デフォルトにバインドするIPをpeerConfigで選択できるかどうかを確認してください。

また、ルーターに問題がある可能性もあります。コンピューターを DMZ にするか、ポート フォワーディングを有効にしてみてください。

于 2012-09-27T19:35:42.360 に答える
1

これはコードに関連しているとは思いません。

ルーターのプライベート側からルーターのパブリック側に直接接続しようとしているため、ルーターにホストを構成する必要があります。

コードを変更する必要がないように dyndns アドレスに接続できるようにしたい場合は、Windows ホスト ファイルを変更することもできます。

于 2012-09-27T19:39:10.887 に答える
0

多くのコンシューマールーターは、パケットの送信元を使用して、データを内部として扱うか外部として扱うかを決定します。言い換えると、内部ネットワークに接続していて、ルーターのIPアドレスのいずれかにアクセスしようとすると、ルーターはそれを内部として扱います(つまり、カスタマイズWebサイトでポート80に応答し、他のほとんどの場合は応答しません)。

残念ながら、解決策を見つけるのは困難です。

于 2012-09-27T19:44:49.173 に答える