問題タブ [datagram]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1524 参照

c# - C#のUDPソケット?

socket.ReceiveFrom (byte [] message, EndPoint endPoint)バインドされたUDPソケットでデータを受信するために使用され、データが受信されない場合はどうなりますか?データが到着するのを待ち続けますか、それとも継続しますか?私は特にUDPデータグラムについて話している。

0 投票する
1 に答える
1205 参照

java - マルチキャスト サーバーとクライアントは、オブジェクトを送信して確認応答します

サーバーのIPを受信すると、そのIPをマルチキャストグループに送信し、グループ内のクライアントがオブジェクトを送信するマルチキャストサーバーを実装しています。そして、これは定期的に行われます。

したがって、最初の接続は 1 対多で、2 番目の接続は 1 対 1 です。個々の部分、つまりマルチキャストを実装し、オブジェクトをソケット経由で正しく送信しましたが、全体として実行するとエラーに直面しています。

コードは次のとおりです。

マルチキャスト サーバー スレッド:

QuoteServerThread:

クライアント側: MulticastClient:

クライアント側のソケット作成を指すスレッド「メイン」で例外が発生しています。

誰か助けてくれませんか?ありがとう!

0 投票する
3 に答える
610 参照

java - DatagramPacketベースのアプリケーションのArrayIndexOutOfBoundsException

最初に、プログラムで使用した変数/関数の名前を磨いてしまったことをお詫びする必要があります。

したがって、辞書はほとんどありません。

問題は、クライアントがサーバーからデータを受信して​​いるときに発生します-ArrayIndexOutOfBoundsExceptionがあります。

サーバー全体のコード:

..およびクライアントのコード:

0 投票する
2 に答える
108 参照

java - 使用したいポートが常に使用可能 (つまり、使用されていない状態) であることを確認するにはどうすればよいですか?

ポートを強制解放する方法はありますか? ポートは args[] を介して渡されます。複数のデバイスからの UDP パケットを待機するサーバー アプリを構築しようとしているので、常に適切なポートをリッスンすることを確認したくありません。パケットからのデータが処理され、結果が DB に書き込まれます。新しいパケットをリッスンし続けるために、while(true) ループを使用しています。複数のデバイス (たとえば 2000) が一度に送信すると、同時実行の問題が発生する可能性はありますか? while(true) を使用する以外に方法はありますか? 助言がありますか?

EDIT(トピックに合わない場合があります)これらのメソッドを使用して、2バイトと4バイトの長さの符号付き2の補数を変換しています。もっと簡単な方法が見つかりませんでした...

0 投票する
1 に答える
3775 参照

java - ソケットで長さが不明なパケットを待機し、そのペイロードバイトを可能な限り効率的に処理する方法に関する提案はありますか?

相関のないデバイス(最大10000個)からのパケットが定期的に小さなパケットを送信するのを待つUDPサーバーを作成する必要があります。ペイロードを使用して処理を行い、結果をSQLに書き込みます。これで、jdbcを介してSQLの部分は完了しましたが、ペイロードバイトが引き続きバグを引き起こします。どのようにアクセスすればよいですか?これまで、文字列にマップされたペイロードを操作してから、文字列を16進数(1バイトを表す2つの16進文字)に変換してきました。私はこれを行うためのより良い方法があることを知っていますが、私はそれを知りません...

0 投票する
1 に答える
2423 参照

java - UDPブロードキャスト-JavaサーバーのIPアドレスを要求するAndroidアプリ

Androidアプリでサーバーにpingを実行し、サーバーでIPアドレスを返そうとしています。

これまでのところ、サーバーとサーバーと通信してパケットを送り返すことができましたが、サーバーのIPアドレスを送り返す必要があります。

UDPService.java(サーバー)

Discoverer.java(電話アプリ)

search.java(電話アプリ)

この後にかなりのコードがありますが、これはIPAddressがnullの場合に何が起こるかに基づくifステートメントにすぎません。

0 投票する
1 に答える
3549 参照

java - インターネット経由でデータグラムパケットを送信するには?

Java で基本的なデータグラム クライアント/サーバー プログラムを作成しようとしています。

サーバーをローカル コンピューターのポート 9321 に固定しました。

ローカル コンピューターのポート 9320 でクライアントを作成し、ポート 9321 でワイヤレス ルーター ネットワーク (192.168.1.100) を介してデータを送信すると、プログラムが動作します。

次に、ポート 9321 でインターネット IP 139.195.12.183 (私の ip) 経由で (ルーター経由で) パケットを送信しようとしましたが、うまくいきませんでした! この例外があります:

ポート 9321 へのすべての要求をコンピューターに転送するようにルーターを設定し、そのポートでコンピューターのファイアウォールの例外を設定しました。

これがソースです

別のフォーラムから別の回答がありました:

「ルーターの仕組みでは、内部ネットワーク (LAN) から外部 (WAN) インターネットアドレスを見ることはできません。それがあなたがやろうとしていることであるなら、何も問題はありません。うまくいかないだけです。

イアン。"

説明はありますか?

0 投票する
1 に答える
2552 参照

java - Java DatagramSocket 設定キープアライブ オプション

keep-alive オプションで送信する datagramsocket と datagrampacket を作成しようとしています。これを設定する方法については混乱しています。のようにする簡単な方法はありdatagramsocket.setKeepAlive(true);ますか?

編集: 申し訳ありませんが、パケットの生存時間を設定することを意味していました。受信されない場合、受信されるまでそのままになるように設定する方法はありますか?

0 投票する
1 に答える
265 参照

nio - サーバーがフレーム デコーダで「channelInterestChanged」イベントを受け取る理由がよくわかりません

独自のフレーム デコーダーを実装して、UDP ソケット経由で受信したバイトを (NioDatagramChannelFactory と ConnectionlessBootstrap を使用して) プロトコルに従って解析しました。メッセージの受信中にサーバーで何が起こっているかを追跡するために、デコーダーの各コールバック メソッドにトレース ログを追加しました。

サーバーが受信するほぼすべてのメッセージで、メソッド channelInterestChanged() でイベント「channelInterestChanged」が 2 回受信されていることがわかります。イベントの値は、最初は 0 (OP_NONE)、次に 1 (OP_READ) です。

これに関するドキュメントを読みましたが、なぜこのようなイベントが発生するのかまだよくわかりません。最初に確認したのは、受信バッファー (またはセレクター キュー) がいっぱいだったからですが、サーバーは "messageReceived" イベント (decode() メソッドが呼び出される前) とすべてのメッセージを受け取るのと同じ回数、このイベントを受け取ります。 /frames は期待どおりに正しくデコードされます。メッセージが欠落している場合、イベントはまったく表示されません。この場合、おそらくデータグラム ソケットの受信バッファがいっぱいになっていることが原因です。しかし、この受信バッファーを増やしても、引き続きこれらのイベントが表示され、メッセージが失われます。

したがって、受信したメッセージごとに、サーバーが2つの「channelInterestChanged」も受信する理由が不思議です。1つはOP_NONE値で、もう1つはOP_READ値です。チャネル パイプラインでは、私のフレーム デコーダーの後に、ExecutionHandler と別のビジネス固有のハンドラー (JMS メッセージを ActiveMQ インスタンスに送信する) があることにも注意してください。

私のためのアイデアや説明はありますか?

ありがとうございました。

0 投票する
1 に答える
320 参照

c - C UDPネットワーキング、データグラムメッセージから数値を抽出

私は大学の試験の一環としてネットワークソフトウェアを開発しています。ソフトウェアはほぼ完成していますが、実際には並行部分を完成させています(fork()を使用)。私のニーズは、クライアントとサーバーの間でこれら2つのメッセージをハンドシェイクとして交換することです。ここに例があります:PING:3506:DOWNLOAD PONG:5605

これらのメッセージを処理する私の方法は次のとおりです。クライアント側では、PING:3506:DOWNLOADを送信するホストです。

サーバー側では、PONG:5605を送信するホストです。

お気づきのように、最初の非動作部分に焦点を当てたいので、PONG部分が欠落しています。サーバーは(Wiresharkからわかるように)メッセージPING:3506:DOWNLOADを正しく受信しますが、3506ではなく19476を受信したと言っており、これは正しくありません。また、数値メッセージをネットワークバイトオーダーに変換せずに送信しようとすると、状況が悪化することにも気づきました。私は何日もこれと戦っています、そして私はもう何を考えるべきかわかりません。