問題タブ [udpclient]
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.
c# - UdpClient の IP アドレスを変更するには?
その場で UdpClient の IP アドレスを変更する方法はありますか?
StartUpd()
投げる
System.Net.Sockets.SocketException: 通常、各ソケット アドレス (プロトコル/ネットワーク アドレス/ポート) の 1 つの使用のみが許可されます
をした後でもStopUpd()
。
c#-4.0 - C#:close()をすぐに呼び出すときにUdpClientがデータを送信しない
一部のコンピューターでは、UdpClient.Send()の直後にUdpClient.Close()が呼び出された場合、UdpClientがデータを送信しないという奇妙な効果があります。パケット損失を確認するために.NET4.0とWireSharkを使用しています。
コーディングの重要な部分は次のとおりです。
奇妙なのは:
- ほとんどのコンピューターでは、データは問題なく送信されます
- パケットが送信されなくても例外やその他のエラーはありません
- bytesSentは常にdata.Lengthと等しくなります
- パケットを送信しないコンピューターでは、sender.Close()を呼び出す直前にThread.Sleep(250)で問題が解決します。
では、UdpClient.Send()が正しいバイト数を報告した後でも、何がパケットの送信をキャンセルできるでしょうか。これが特定のマシンでのみ発生するのはなぜですか?これは、一部のネットワークドライバ、ウイルス対策ソフトウェアなどの異なる動作である可能性がありますか?
また、LingerOptionsを明示的に設定しようとしましたが、デフォルトでは、基になるソケットを閉じる前にすべての保留中のデータを送信するため、これは不要です。ただし、sender.Client.LingerState = new LingerOption(true、10)を実行する場合(http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.lingerstate.aspxで説明されているように)取得します
何が起こっているのかアイデアはありますか?
よろしく、セブン
c# - 同じメッセージを2回送信することは、UDPの不利な点に対して良いポリシーですか?
サーバー、クライアント、client2というc#実行可能ファイルが同じアドレスで相互にメッセージを送っています。私はそれらが来るポート番号によってメッセージを区別しています。
通常の実行-1サーバーがクライアントの参加を開始し、離脱します
run-2サーバーがクライアント2の参加を開始し、離脱します
run-3サーバーがクライアントの参加を開始しますclient2の参加(ここで問題が発生します)、サーバーから応答を受け取る場合もあれば、ハングしてサーバーからの応答が届かない場合もあります。
msg転送ルーチンをブロックするUDPClientを使用しています。
現在の解決策:サーバーから同じメッセージを2回送信しています(少なくとも2回目の取得を期待して)。これは非常に重要であり、このメッセージが失われることはありません。そのような一時的なハッキングの潜在的な失敗は何でしょうか?
また、私のqかどうか教えてください。不完全です詳細を提供します。
.net - UdpClientのインスタンス化によってConfigurationExceptionが発生するのはなぜですか?
最近、App.confgファイルに構成セクションを追加しました。セクションが無効であることに気付きましたが、この行に到達するまで、アプリケーションは実際に実行されました。
その時点で、次の例外が発生しました。
メッセージ付き:
および内部例外メッセージ(同じタイプの例外):
UdpClientをインスタンス化すると、アプリの構成にアクセスするのはなぜですか。また、メソッドが示すように、ソケット例外(内部構成例外を含む)ではなく、構成例外をスローするのはなぜですか?
c# - UDPクライアントマルチキャストが機能しないのはなぜですか?
ポートに何か問題がありますか?
recvメソッドがブロックされていますが、メッセージを受信していませんか?
wiresharkでは、ローカルアドレスポート10102から224.0.0.1 dest_port 0に送信されるメッセージを確認できますが、recvはマルチキャストアドレスからメッセージを取得していません。
ところで、私は同じコンピューターで両方のインスタンスを実行しています。参照: http: //msdn.microsoft.com/en-us/library/ekd1t784.aspx
**解決策を得ました:送信ルーチンで
する必要があります
受信ポート**
c# - データを失うことなく、別のIPアドレスから送信されたUDPデータをテキストファイルに書き込む方法
実際には console.writeline で、別の ipaddress から送信された UDPserver からすべてのデータを取得しています。転送されたデータをテキスト ファイルに書き込んでいるときに、一部のデータが見つからないため、そのデータを失わずにテキスト ファイルに書き込む方法は書き込まれません。
buffer - UdpClient受信バッファ。いつパケットをドロップしますか?
UdpClientをポートに配置しています。データの送信に使用します。
99%の時間、着信パケットは気にしません。ただし、まれに、送信したパケットの1つからの応答をリッスンする必要があります。
私の最初の考えは、送信の直後にUdpClient.Recieve()を呼び出し、応答が見つかるまでパケットをループすることです。
ただし、UdpClientで受信バッファーがどのように機能するのか疑問に思っています。私は受信したパケットを正常に処理していないので、それらをバッファリングし、バッファが特定のサイズに達したときにそれらを破棄する必要があると思います。この破棄は、応答がネットワークに到着した直後で、Recieve()呼び出しが実行される前に発生する可能性があるのではないかと心配しています。
受信したすべてのパケットを非同期で継続的に処理することを私が考えることができる唯一の解決策ですが、これはそのような単純な状況ではやり過ぎのようです。
UdpClientのバッファリング動作を知っている人はいますか?(たとえば、バッファ全体を破棄しますか、それとも最も古いデータだけを破棄しますか?)MSDNは、私が見つけることができる詳細を提供していません。
c# - UdpClient で MulticastLoopback をオフにできません
UdpClient からダイレクト ブロードキャスト パケットを送信しています。
また、2 番目の UdpClient (同じアプリ内) のターゲット ポートでリッスンしています。
自分で作成したパケットを見たくないので、MulticastLoopback を false に設定するだけの場合だと思っていましたが、これは機能しません。自分のパケットがまだ表示されます。
アイデアはありますか?
UdpClient でこれを達成できますか、それとも生のソケットに戻す必要がありますか?
編集:
送信と受信の両方に 1 つの UdpClient インスタンスを使用してみましたが、MulticastLoopback の設定に関係なく、データをまったく受信しません!
IPAddress.Any とローカル IP の両方でリッスンしようとしましたが、パケットがまったく表示されません。
c# - 間違ったスレッドでの SocketException
UdpClient
UDP ネットワーキングにC# クラスを使用しています。固定ローカル ポートにバインドされたオブジェクトが 1 つありUdpClient
ますが、リモート エンドポイントにはバインドされていません。これは、複数の異なるエンドポイントとの間で送受信できる必要があるためです。
2 つのスレッドがあります。1 つは送信用、もう 1 つは受信用です。ここで、存在するがそのポートでリッスンしないエンドポイントにデータを送信すると、SocketException
. そして、私はそれを手に入れます。残念ながら、Send
例外を返すのは私の呼び出しではなく、Receive
呼び出しです。したがって、送信スレッドで「無効な」エンドポイントにデータを送信すると、受信スレッドで例外が発生します。残念ながら、その時点ではもちろん、どのエンドポイントがその例外を発生させたのかわかりません。
送信前にエンドポイントを格納し、受信スレッドでエンドポイントにアクセスすることは、競合状態エラーが発生するのを待っているだけです。
残念ながら、SocketException
エラーの原因となったエンドポイントはわかりません。
何か案は?送信スレッドで例外をスローすることは何とか可能ですか?
助けていただければ幸いです。
c# - UdpClient 送受信
まず、私が読んだことを言いたい: UdpClient, Receive() right after Send() does not work?
私の質問は、これが UDP 通信を処理する通常の標準的な方法ですか? 送信用に 1 つの UdpClient をセットアップし、受信用に別の UdpClient をセットアップしますか?