問題タブ [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.
c++ - ソケットオプション SO_RCVTIMEO が不正確?
100 スレッドを開始するときは正確に 10 ミリ秒ですが、1000 スレッドを開始するとき、redisVCommand の一部の呼び出しは 300 + ミリ秒のコストがかかり、タイムアウトではありません。誰かがこれを詳細に説明できますか?
redisSetTimeout 関数は、次のシステム関数を呼び出します
c++ - OSX での TCP_USER_TIMEOUT の setsockopt オプション名は何ですか
いくつかのコードを OSX に移植しようとしています - setsockopt
Linux とはいくつかの違いがあるようです。これまでに見つけて修正したのは、TCP_KEEPIDLE の代わりに TCP_KEEPALIVE を使用していることです。
OSX の TCP_USER_TIMEOUT に相当するものは何ですか?
TCP_USER_TIMEOUT を使用するとコンパイルに失敗し、undeclared identifier
エラーが出力されます
sockets - タイムアウト TCP の設定 [ setsockopt + SO_RCVTIMEO ]
特定のソケットでタイムアウトを設定したいときに何か質問したいのですが、この関数を呼び出します
そしてそれはうまくいっています
今私の質問
clientsocket を特定のタイムアウトに設定した場合、タイムアウトが発生しないように clientsocket を戻すにはどうすればよいですか?
たとえば、settimeout(3000); 受信
その後、recv の後、タイムアウトのない状態に戻したいのですが、どうすればよいですか?
あなたの助けは大歓迎です:)
c - setsockopt() で SO_RCVBUF に指定された新しい値はいつ有効になりますか?
私のクエリは、setsocketopt() API の「SO_RCVBUF」オプションに関連しています。setsockopt() で SO_RCVBUF に指定された新しい値はいつ有効になりますか?
TCP/IP のフロー制御をテストしており、以下が私の環境です。クライアント プログラムは読み込みが遅く、ソケットは 1 つです。フロー制御をテストするために、接続を確立した後、データを受信する前に、SO_RCVBUF の値を 5000 バイトに減らしています。私の期待は、5000バイト以上を送信した後のサーバープログラムは、クライアントが読み取るのを待つ必要があるということです。しかし、サーバー プログラムは最大 60000 バイトまでデータを送信します。その後、サーバープログラムはクライアントが読み取るのを待ちます。クライアントが最大 55000 バイトを読み取ると、受信バッファの新しい値 (5000 バイト) が使用されていることがわかります。
それは期待されていますか?setsocketopt() の効果はすぐに現れるはずです。受信バッファの初期値は、setsocketopt() の後で何の効果も持たないはずです。
よろしく、 プラシャント
sockets - SOL_SOCKET は任意の optname に使用できますか?
私は SCTP プログラミングに非常に慣れていないので、トラブルシューティングを行ったり、書籍 (W.Richard Stevens による Unix Network Programming) を参照したりしているときに、あいまいな点に出くわしました。本によると、IPPROTO_SCTPで使用されるはずのオプション名(optname)値SCTP_INITMSGおよびSCTP_EVENTSについて、こことここでSOL_SOCKETとしてレベル名を使用しています。どちらのコードも正常に機能するため、何かが欠けているに違いなく、極めて重要なものが欠けていると感じています。それは何ですか?これで私を助けてください。ありがとうございました。
c - C UDP ソケット: 任意の setsockopt 動作 (SO_RCVTIMEO を使用)
SO_RCVTIMEO は、出力関数でタイムアウト条件を作成していません。ARQ スライディング ウィンドウ プロトコルを使用してファイル転送サービスを設計しています。物事を整然と保つために、基本的な停止と待機から始めます。
これはtimevalの私の初期化です
これは、recvfromタイムアウトを準備する際のその構造とソケットの使用です
これは、タイムアウトするはずのコードの本体です。
}
問題: タイムアウトは発生しませんが、setsockopt もエラーを返しません。私は自分が間違っていることを知る方法がありません。
質問や環境を明確にするために他にできることがあれば、お知らせください。また、これをデバッグすることについて何か提案があれば幸いです。
linux - setsockopt が EINVAL を返すのはなぜですか?
setsockopt関数を使用してインターフェイスのマルチキャスト アドレス リストにアドレスを追加しようとしていますが、errno EINVAL で失敗します。カーネル コードにいくつかの printk を入れましたが、 optlenに渡された値がpacket_mreq構造体のサイズよりも小さいため、errno が最終的にカーネルのpacket_setsockopt関数に設定されているようです。私の人生では、なぜこれが起こっているのか理解できません。関連するコードは次のとおりです。
sockets - 特定の IP からマルチキャスト データを送信する方法は?
以前にインターフェイスに追加されたエイリアス IP からマルチキャスト グループにデータを送信しようとしています。IP_MULTICAST_IF とエイリアス IP を使用して setsockopt() を呼び出しています。ただし、データは常にそのインターフェイスのデフォルト IP から送信されます。説明のために、いくつかのコードを提供しています。
ip addr show
コマンドは、ens33
インターフェースに対して次の出力を提供します。
現在、setsockopt() は次のように使用されています。
ただし、マルチキャスト パケットは常に から送信さ192.168.190.183
れ、setsockopt() 中にエラーはスローされません。
誰でもこれを解決できますか?助けてください。前もって感謝します。
c++ - Linux で setsockopt を使用して接続タイムアウトを設定する
QTcpSocket を使用してピアに接続しようとする Linux Qt5/c++ アプリを作成しています。電話する
ピアが利用可能になると、うまく機能し、すぐに接続されます。ただし、ピアが使用できない場合: 上記を初めて呼び出すと、接続は SocketTimeoutError (5) を受け取る前に 1 分間待機します。その後、接続への後続のすべての呼び出しは、ConnectionRefusedError (0) を受け取る前に 1 秒待機するか、1 分間待機する可能性があります (テストされたシステムによって異なります)。
初期接続の待機時間を短縮するために使用できる setsockopt はありますか?
接続が失われたことをすぐに通知するために、いくつかのソケット オプションを既に設定していることを指摘しておく必要があります (以下を参照)。これらが 1 分間の初期接続エラーの遅延を引き起こしていないことを願っています。