問題タブ [udp]

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 に答える
6106 参照

c# - C#でのマルチキャストUDPサーバーの検出についてサポートが必要

この質問の一種のフォローアップとして、ローカルマシンで動作するソリューションを取得しましたが、ネットワーク上のマシンでは動作しません。

それ以外のソケットについてはあまりよく知らないので、我慢してください。目標は、クライアントがローカルネットワーク上のサーバーを探すことであり、これはいくつかのカット/貼り付け/編集コードの結果です。

これはクライアントコードです:

これはサーバーコードです:

ローカルマシン(サーバーとクライアントの両方)で検出されますが、同じネットワーク上の別のマシンを試してみると、「既存の接続がリモートホストによって強制的に閉じられました」というメッセージが表示されます。

たくさんのtry/catchを追加する必要があることに気づきましたが、これが最初にどのように機能するかを把握しようとしています。

0 投票する
6 に答える
105338 参照

c# - C# リトル エンディアンまたはビッグ エンディアン?

UDP/IP 経由で制御できるハードウェアのドキュメントで、次のフラグメントを見つけました。

この通信プロトコルでは、DWORD は 4 バイトのデータ、WORD は 2 バイトのデータ、BYTE は 1 バイトのデータです。格納形式はリトル エンディアンです。つまり、4 バイト (32 ビット) のデータは、d7-d0、d15-d8、d23-d16、d31-d24 として格納されます。2 バイト (16 ビット) のデータは、d7-d0 、d15-d8 として格納されます。

これが C# にどのように変換されるのか疑問に思っています。送信する前にデータを変換する必要がありますか? たとえば、32 ビット整数または 4 文字の文字列を送信したい場合は?

0 投票する
5 に答える
57435 参照

networking - アプリケーションで使用するマルチキャスト アドレスを選択するにはどうすればよいですか?

アプリケーションで使用する IPv4 マルチキャスト アドレスはどのように選択すればよいですか? 複数 (おそらく最終的には全範囲) が必要になるかもしれませんが、他のアプリケーションとの競合を避けたいだけです。

  • パケットは、おそらく LAN などの管理ドメイン内に完全に含まれます。
  • 私のアプリケーションのいくつかの独立したインスタンスが同じネットワークで使用されている場合、それらはそれぞれ独自のマルチキャスト アドレスを使用できますが、そうでない場合でも共存できます。お互いのパケット。
  • 問題を回避するために、パケットにはすでに「マジック ナンバー」が含まれています
  • 送信元アドレス (もちろんなりすましの可能性があることはわかっています)、TTL などをチェックして、予期しないパケットによる混乱を防ごうとしています。

アイデアをください:)

現在、「ローカル使用」スペース 239.255.42.99 から任意のものを割り当てました。

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

java - Java: MulticastSocket での受信時に受信アドレスを判別

MulticastSocket を使用して UDP マルチキャスト パケットを受信して​​います。そのようなパケットが送信されたアドレスを特定するにはどうすればよいですか? 提供された方法では、送信者のアドレスしか特定できません。

もちろん、リッスン ソケットを作成するときに To-Address を設定するのは私ですが、これについて本当に確信が持てますか? ブロードキャスト パケットはどうですか。どういうわけかここで終わるパケットはどうですか? パケットが本当にマルチキャストであったかどうかを本当に区別したい.

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

更新: 現在、そのポートに送信されたばかりのユニキャスト パケットも、マルチキャスト ソケット receive() で終了するようです :( デバイスへのバインドでも、より良い結果は得られません

0 投票する
7 に答える
51084 参照

c++ - 最大スループットのための UDP パケットの最適なサイズは?

損失が発生する可能性のあるネットワークを介して、あるホストから別のホストにパケットを送信する必要があります。パケットの遅延を最小限に抑えるために、TCP/IP は考慮していません。しかし、UDP を使用してスループットを最大化したい。使用する UDP パケットの最適なサイズは?

ここに私の考慮事項のいくつかがあります:

  • ネットワーク内のスイッチの MTU サイズは 1500 です。8192 などの大きなパケットを使用すると、断片化が発生します。1 つのフラグメントが失われると、パケット全体が失われますよね?

  • 小さいパケットを使用すると、UDP および IP ヘッダーのオーバーヘッドが発生します

  • 非常に大きなパケットを使用する場合、使用できる最大サイズは? データグラムの最大サイズは 65507 であると読みました。このようなサイズを送信できるようにするには、どのくらいのバッファ サイズを使用すればよいですか? それは私のスループットを上げるのに役立ちますか?

  • 一般的な OS (Windows、Linux など) でサポートされる典型的な最大データグラム サイズは?

更新しました:

データの受信者の一部は、TCP/IP スタックが実装されていない組み込みシステムです。

この場所には、利用可能なものを使用することに非常に熱心な人がたくさんいることを私は知っています. しかし、MTU だけに注目するよりも、より良い答えが得られることを願っています。

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

udp - unix Sockets API を使用してローカルで利用可能な UDP ポートを見つける方法

潜在的に多くのプロセスが 1 つのプロセスにメッセージを送信する必要があるアプリケーションがあります。これを行う最も適切な方法は、UDP データグラムを送信することだと考えました。

ソケットを開くとき、リッスンするポートを指定する必要があります。UDPデータグラムを起動して忘れたいだけなので、OSに使用可能なポートを選択させたいだけです。特にプロセスの多くのインスタンスが実行されている可能性があるため、1つを探す必要はありません。UDPデータグラムを起動して忘れるために、OSに利用可能なポートを選択するように(または、さらに良いことに、リスニングソケットを開くことさえしないように)指示する方法はありますか?

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

header - UDPのヘッダーに長さフィールドがあり、TCPにはないのはなぜですか?

UDPのヘッダーに長さフィールドがあり、TCPにはないのはなぜですか?

TCPのセグメントの長さはIPヘッダーから推測されると思いますが、UDPデータグラムでも同じことができるはずです。

0 投票する
15 に答える
196116 参照

http - HTTP は UDP を使用しますか?

これはばかげた質問かもしれません:

  • HTTP はユーザー データグラム プロトコルを使用しますか?

例えば:

HTTP を使用して MP3 またはビデオをストリーミングしている場合、トランスポートに内部的に UDP を使用しますか?

0 投票する
6 に答える
11139 参照

sockets - UDP レスポンス

UDP は ack を返信しませんが、応答は送信しますか?

クライアント サーバーの UDP プログラムをセットアップしました。存在しないサーバーにデータを送信するようにクライアントに指示した場合、クライアントは応答を受け取りますか?

私の仮定は次のとおりです。

クライアント --> ブロードキャスト サーバー アドレス (ARP) サーバー --> クライアントにその MAC アドレスを返信 (ARP) クライアントがサーバーにデータを送信 (UDP)

いずれの場合も、クライアントは ARP 応答のみを受信します。サーバーが存在するかどうかにかかわらず、UDP 応答を取得できませんか?

クライアントは sendto 関数を使用してデータを送信しています。sendto 呼び出し後にエラー情報を取得できます。

だから私の質問は、クライアントが何の応答も得ないときにこの情報をどのように利用できるかということです。エラー コードは、WSAGetLastError から取得できます。

存在しないホストにデータを送信しようとしましたが、sendto 呼び出しが成功しました。ドキュメントによると、戻り値 SOCKET_ERROR で失敗するはずです。

何かご意見は??

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

networking - ルーターの背後にあるクライアント サーバー プログラム

クライアント サーバー UDP プログラムを実行しようとしています。私の両方のマシンは異なるネットワークにあります。ルーターでポートフォワーディングを設定しました。

私のサーバーには 2 つの IP アドレスがあります: 1) 外部 200.?.?.? 2) 内部 192.168.0.100

UDP サーバーの作成中に、アドレスにバインドされるソケットを作成する必要があります。

外部または内部のどのアドレスにソケットをバインドする必要がありますか?

内部アドレスで試しましたが、クライアントからデータを取得していません。

提案...