私はネットワークに関連するプログラムに取り組んでおり、クライアントが LAN 内にあるサーバーに接続する必要がある状況があります。
私が知っているように、TCP 接続を確立するときは、サーバーがリッスンしているポートにクライアントがアクセスできる必要があります。サーバーが LAN 内にある場合、ポート アクセスはルーターによってブロックされます。私が知っている解決策の 1 つは、UPnP を使用してルーターでポート マッピングを実行することです。ただし、ルーターが UPnP をサポートしていない場合があります。他の解決策はありますか?
IM アプリケーションが思い浮かびました。多くの IM アプリケーションには、インターネットにアクセスできる限り、ネットワーク環境がどうであれ、ユーザーが相互にファイルを送信できる機能があります。パブリック サーバーが 2 つの間のファイル データ エクスチェンジャーとして使用されているとは思わないので、直接接続する必要があります。クライアントが「隠された」サーバーに接続できるようにするために、実際にはどのようにしているのでしょうか?