あなたが本当に求めていることは、次のようなものであるようですが...
がどのように私は、これらのクライアントの両方がファイアウォールのいくつかの種類の後ろにある場合でも、インターネット上で2つのクライアント間の通信が可能に聞こえますそれは直接TCPまたはUDP接続を防止するか?
回答:通常の解決策は、彼らのトラフィックを中継するために、仲介者としての両方のクライアントによって到達可能であるインターネット上のサーバーを使用することです。最近までこれは非常にアプリケーション固有の方法で実行され、インターネット上の専用サーバーの管理が必要でした。しかし、どのような他の誰かに負担をオフロードする方法があった場合...
私は私のアプリの通信のための一種のバックエンドとして 行為をFreenodeのような無料のIRCサービスを利用できる場合、私は不思議でしたか?
回答:おそらくそうではありません。または、テストアプリケーションで動作する場合は、IRCサーバーを介して大量のトラフィックを送信しようとすると、すぐに運用環境で禁止されます。幸運なことに、この種の中継サービスは、実際には開発者や運用のユースケースで利用可能です。 WebRTCは、これらの種類のリアルタイムアプリケーションを可能にするように特別に設計されています。グーグル・グーグルでファイアウォールを破る言い伝えはSTUN and TURNです。
私は現在、自分自身のアプリケーションのためにTwilio'sのホストサービスを探していますが、AmazonのEC2ではhost your own TURN relayにも可能です。残念ながら、フリーランチというものはありませんので、これらのサービスごとにいくらかの金額を支払わなければなりませんが、堅牢で標準に準拠したコードを書くのは暖かい気持ちになります。
なぜ通信にIRCを使用しますか?そのためには、ソケット通信だけでなく、IRCプロトコル(少なくとも部分的に)を実装する必要があります。とにかくソケットが必要なので、単純にプログラム間で直接通信するのはなぜですか? –
私は、この問題をソフトウェアやプログラミングの問題ではないように思わないため、議論の対象外としています。 –
@Someprogrammerdude私はインターネットを介して通信が行われるため、ホストするために何か必要があります。 – user400424