4

2 台のマシンが TCP 経由で相互に通信する必要があるプログラムをコーディングしています。

私は、java.net Socket クラスおよび関連するものについて (非常に) 基本的な知識を持っています。ルーター/ファイアウォールが接続をブロックしているのではないかと心配しています。Java STL Socket クラスを使用するには、ポートを開くだけです。

友人から upnp の使用を検討するように言われ、 upnp に関する別のスタックオーバーフローの質問でClingの使用が提案されました。ネットワーク プログラミングの初心者として、Cling はやり過ぎのように思えます (そして、私はマニュアルを完全に理解できるほど高度ではありません)。

間違った質問をしている、間違った場所を探しているなどの場合は申し訳ありません.2台のマシンを接続して、手動でルーターにアクセスしてポートを転送することなく、いくつかのフロートを前後に送信するだけです。

これを自動的に行う STL や単純なライブラリはありますか?

4

2 に答える 2

2

まず最初に、Java には「STL」などというものはありません。おそらく、基本的な Java SDK について言及しています。

第二に、ネットワークの観点からは、まったく簡単ではない操作を実行するための「簡単な手段」を求めています。プログラムの 1 つ (プログラム A) が実行しなければならない最も基本的なタスクを見てください: その「ターゲット」(プログラム B) のネットワーク上の場所を示します。プログラム B がルーターの背後にある場合、プログラム B のネットワークの場所について何知っていますか? なし。知っているのはルーターのアドレスだけです。

ファイアウォールと同じです。ファイアウォールが接続をブロックすることを心配していますか? ファイアウォールが適切であれば、事前に承認されたものを除くすべての接続をブロックする必要があります。

NAT によって分離されたプログラムの場合、探していることを実行するための唯一の賢明な方法は、UPnP を使用することです。Cling がやり過ぎの場合は、weupnpのようなものを試してください。

ただし、フリーランチはありません。

プログラム A とプログラム B の間にネットワーク「マスキング」デバイス (ルーターなど) がない場合は、Java SDK を使用した非常に単純な TCP/IP プログラミングが機能するはずです。途中にネットワーク デバイスがある場合、デバイスを構成するか、UPnP を使用して対処する必要があります。

于 2013-01-20T00:39:44.033 に答える
0

次のチュートリアルをよく見てみましょう: http://www.giantflyingsaucer.com/blog/?p=224

ここでの考え方は、呼び出されたライブラリがxsocket、新しい情報が到着したときにトリガーされるイベントを作成するというものです。

于 2013-01-20T00:39:39.733 に答える