問題タブ [setsockopt]
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.
linux - SO_REUSEADDR (setsockopt オプション) の意味は何ですか - Linux?
マニュアルページから:
SO_REUSEADDR プロトコルでサポートされている場合、bind() に提供されたアドレスの検証に使用される規則で、ローカル アドレスの再利用を許可する必要があることを指定します。このオプションは int 値を取ります。これはブール値のオプションです
いつ使用すればよいですか?「ローカルアドレスの再利用」が与えるのはなぜですか?
sockets - TCP オプション SO_LINGER (0) が必要になるのはいつですか?
オプションの正式な意味は理解できたと思います。私が現在扱っているいくつかのレガシーコードでは、オプションが使用されています。顧客は、側から近い接続で、側からの FIN への応答として RST について不満を述べています。
いつ使用すべきかわからないため、安全に削除できるかどうかわかりません。
オプションが必要になる場合の例を教えてください。
c++ - マルチキャスト レシーバー ソケットでの重複パケット
以下の MulticastReceiver の実装にバグがあるようです。
<224.0.25.46,13001> と <224.0.25.172,13001> の 2 つのインスタンスを作成すると、各ストリームで各パケットが 2 回取得されます。ポインタはありますか?私の推測は REUSEADDR ですか?
アドバイスしてください。もちろん、改善や最適化があれば指摘してください。
c++ - Ubuntu で TCP_NODELAY が見つからない
TCP_NODELAYパラメータを設定して、Ubuntu Linux ボックスの TCP ソケットでNagle のアルゴリズムを無効にしようとしています。何らかの理由で、この定数はまたはで定義されていません。この定数は非推奨になり、Linux から削除されましたか、それとも何か不足していますか?<sys/types.h>
<sys/socket.h>
}
flash - DatagramSocket のマルチキャスト グループに参加しますか?
AIR UDP ソケット (DatagramSocket) で別のアプリケーションによってマルチキャストされたネットワーク データを受信したいと考えています。
他のプログラミング言語では、これは (Java) " sock.joinMulticastGroup(group) " を呼び出すことによって実現されます。C では、単純な " setsockopt " 呼び出しです。
「setsockopt」と同等のものを使用して、Adobe Flash (TCP または UDP) でソケットを微調整する方法については何も見つかりません (ちなみに、別の「setsockopt」呼び出しで、受信バッファ サイズも変更したいと考えています)。
できるかできないかわかる方いましたら教えてください。マルチキャスト データをローカルで受信し、ローカルホストの TCP または UDP フラッシュ ソケットに転送するための専用アプリ (C で記述します) を用意する準備ができています。
どうもありがとう!:)
マチュー
PS:これは私が Adobe フォーラムに投稿したメッセージへのリンクですが、あまり成功していません。週末かな?;)
PPS:これは私を怖がらせる別のリンクです。質問は 2008 年のものですが、最後の回答はわずか 3 か月前のものです。
c++ - setsockopt: C++ の不正なファイル記述子
バインド機能をチェックしていないため、有名なエラー「アドレスは既に使用されています」があります。
これが私のコードです:
しかし、コードを実行すると、次のようになりました。
setsockopt: Bad file descriptor
ガイドBeejnetからのコードは正しいです。しかし、なぜエラーが発生したのですか? コードの位置が間違っているのではないでしょうか?
sock_fd が最初に呼び出されるのは、関数 w_socket にあります。
}
デフォルトでは、sesockopt がありますが、チェックはありません。試してみましたが、うまくいきません。
c - SO_SNDBUFの効果
次のコードセグメントがどのように、そしてなぜ機能するのか理解できません。
送信バッファの値を確認すると、実際には5000 * 2 = 10000に正しく設定されています。ただし、送信バッファサイズを超えて送信しようとすると、すべてが送信されます。例えば:
これにより、30000が出力されます。
これはどの程度正確に機能しましたか?送信バッファのサイズが10000に制限されていたという事実は効果がありませんでしたか?もしそうなら、正確には何が起こったのですか?ある種の断片化?
更新:ソケットが非ブロッキングモードの場合はどうなりますか?私は次のことを試しました:
- バッファサイズを10000(5000 * 2)に変更すると、16384バイトが送信されます
- バッファサイズを20000(10000 * 2)に変更すると、30000バイトが送信されます
もう一度、なぜですか?
perl - Perl でソケットに「SO_RCVTIMEO」を設定するにはどうすればよいですか?
私がこのようにしようとすると:
その後、私のスクリプトは「setsockopt: Invalid argument at [line 2]」で死にます。IO::Socket
とpodsはperlfunc
言いませんが、perlfunc はTCP_NODELAY
上記のように見える例を示しています。
(簡単なメモ:私はできる限り自分の質問に答えましたが、確かにより良い答えを歓迎します。最も明白な「より良い」は、少なくともPOSIXマシンでは移植可能であることです)
tcp - tcp ウィンドウ サイズは、tcp ソケットの SND_BUF または RCV_BUF に関連していますか?
setsockopt API を介してソケットの SND_BUF を変更すると、TCP レイヤーの元のウィンドウ サイズがそれに応じて変更されるかどうかを知りたいですか?
c - SO_RCVBUFの値を変更しても機能しないのはなぜですか?
すべてのトラフィックを読み取るためにRAWソケットを作成するプログラムを作成しています。socket()とrecvfrom()の呼び出しの間(最後の呼び出しは、バッファーからすべてのパケットを取り出すためのループ内にあります)、5秒待ちます。
プログラムを実行すると、hping3コマンドを使用して«高速モード»(バッファを高速で埋めるため)で約200パケットをプログラムに送信します。5秒が経過するとすぐに、私のプログラムはバッファから約150パケットを抽出します。
より良い結果を得るために、受信バッファのサイズを変更しようとしています。
ただし、«a»、1、または10000000の値が何であれ、何も変わらないように見えます。それでも、バッファから最大150パケットを取得します。
どうしたの?
編集:«a»の値はgetsockopt
呼び出しで確認されます。