ゲームにネットワーク機能を追加しようとしています。すべてのユーザーがゲームをホストでき、誰もがクライアントとして接続できるようにしたい。クライアントは、プレーヤーの位置などに関する情報をホストに送信します。ホストはメッセージを受信すると、それを検証し、他のクライアントにブロードキャストします。私は主にUDPを扱いますが、チャットやロビーなどのためにTCPも必要になります。
問題は、ルーターでポート転送を有効にしないと、クライアントからホストに、またはその逆にパケットを送信できないように見えることです。しかし、私はこれが必要だとは思いません。ポートフォワーディングが必要な理由は、LAN上の1台のコンピューターから別のLAN上の別のコンピューターにパケットを送信したいためですが、LAN内にあるため、どちらもグローバルIPアドレスを持っていません。そのため、実際には、他のネットワークのルーターをターゲットとするパケットしか送信できません。そのルーターは、到達したいマシンに転送する必要があります。では、ポート転送なしでこれを行うにはどうすればよいですか?どういうわけか、Webサーバーは、グローバルIPを持たない私のコンピューターと、ポート転送なしで通信できます。また、ポートフォワーディングを有効にする必要のないマルチプレイヤーゲームをたくさんプレイしました。だからそれは可能でなければならない。
ところで、私はSDL_Netを使用しています。でもこれが何かを変えるとは思いません。