タグ付けされた質問 「sockets」

双方向のプロセス間通信フローのエンドポイント。これは多くの場合、ネットワーク接続を介したプロセスフローを指しますが、これに限定されるものではありません。WebSocket(プロトコル)または他の抽象化(例:socket.io)と混同しないでください。

11
ソケット接続タイムアウトを構成する方法
クライアントが切断されたIPアドレスに接続しようとすると、15秒を超える長いタイムアウトがあります...このタイムアウトを減らすにはどうすればよいですか?それを構成する方法は何ですか? ソケット接続をセットアップするために使用しているコードは次のとおりです。 try { m_clientSocket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Parse(serverIp); int iPortNo = System.Convert.ToInt16(serverPort); IPEndPoint ipEnd = new IPEndPoint(ip, iPortNo); m_clientSocket.Connect(ipEnd); if (m_clientSocket.Connected) { lb_connectStatus.Text = "Connection Established"; WaitForServerData(); } } catch (SocketException se) { lb_connectStatus.Text = "Connection Failed"; MessageBox.Show(se.Message); }
104 c#  sockets  timeout 


6
特定の量のデータが転送された後にChromeがハングする-使用可能なソケットを待機しています
私はブラウザゲームを持っていて、最近ゲームにオーディオを追加し始めました。 Chromeはページ全体をロードせず、スタックし"91 requests | 8.1 MB transferred"、それ以上コンテンツをロードしません。そしてそれは他のすべてのタブでウェブサイトを壊しさえします、と言いWaiting for available socketます。 5分後(正確に)、データがロードされます。 これは他のブラウザでは発生しません。 1つのMP3ファイル(最後に追加されたもの)を削除すると問題が解決したので、おそらくデータ制限の問題ですか?

7
TCPオプションSO_LINGER(0)はいつ必要ですか?
オプションの正式な意味は理解できたと思います。現在処理しているいくつかのレガシーコードでは、オプションが使用されます。顧客は、RSTについて、その側からの接続に近い側からのFINへの応答として不満を持っています。 いつ使うべきかわからないので、安全に外せるかわかりません。 オプションが必要になる時期の例を教えていただけますか?

15
TCP接続を開いたままにするためにハートビートが必要ですか?
TCP / IPを介して通信する2つのコンポーネントがあります。コンポーネントAはサーバー/リスナーとして機能し、コンポーネントBはクライアントです。2つはできるだけ早く通信する必要があります。接続は常に1つしかありません(ただし、この質問は別です)。私の会社の上級開発者は、接続を確実に開いたままにするために、2つのコンポーネント間でアプリケーションレベルのハートビートを使用する必要があると述べています。 TCP / IPでも接続は開いたままであると思っていましたが、これらのアプリケーション間でハートビートを行うのはかなり標準的な方法であると多くのブログ/サイトを読んだことがあります。 コンポーネントAがコンポーネントBをハートビートする理由の一部を知っているので、コンポーネントBとの通信問題(リンクがダウンしているか、コンポーネントBが実行されていない)がある場合にサポートに通知できます。他の理由でハートビートが必要ですか?たとえば、「パイプの中に」何かを頻繁に開いておくためにそれを確実にするために? 現在、コンポーネントAはコンポーネントBを20秒ごとにハートビートし、120秒以内にコンポーネントBから何も受信されない場合は接続を閉じます。次に、リンクが切断された場合にコンポーネントBが定期的に再接続を試行すると想定して、接続のリスニングを再開します。これは正常に動作します。 私の質問を繰り返します:TCP / IP接続を維持するためにハートビートは必要ですか?
94 sockets  tcp 

3
UNIXノンブロッキングI / O:O_NONBLOCKとFIONBIO
私がBSDソケットプログラミングのコンテキストで遭遇するすべての例と議論では、ファイル記述子をノンブロッキングI / Oモードに設定するための推奨される方法は、O_NONBLOCKフラグをfcntl()に使用することです。 int flags = fcntl(fd, F_GETFL, 0); fcntl(fd, F_SETFL, flags | O_NONBLOCK); 私はUNIXで10年以上ネットワークプログラミングを行っており、FIONBIO ioctl()これを行うために常に呼び出しを使用しています。 int opt = 1; ioctl(fd, FIONBIO, &opt); その理由をあまり考えなかった。ちょうどそのようにそれを学びました。 誰かがどちらか一方の可能性のあるそれぞれの利点について解説をしていますか?移植性の軌跡は多少異なると思いますがioctl_list(2)、個々のioctlメソッドのその側面に触れていないので、どの程度かはわかりません。

13
信頼できるUDPが必要な場合、何を使用しますか?
TCP接続が遅すぎる可能性があり、UDP「接続」が信頼性が高すぎる可能性がある状況がある場合、何を使用しますか?さまざまな標準の信頼できるUDPプロトコルが世の中にありますが、それらについてどのような経験がありますか? 返信ごとに1つのプロトコルについて話し合い、使用しているプロトコルについて他の誰かがすでに言及している場合は、それらを投票し、必要に応じてコメントを使用して詳しく説明することを検討してください。 ここでさまざまなオプションに興味があります。TCPはスケールの一端にあり、UDPはもう一方の端にあります。さまざまな信頼できるUDPオプションが利用可能であり、それぞれがTCPのいくつかの要素をUDPにもたらします。 多くの場合、TCPが正しい選択ですが、代替案のリストを用意しておくと、その結論に到達するのに役立ちます。UDPに基づいて構築されたEnetやRUDPなどには、さまざまな長所と短所があります。それらを使用したことはありますか、あなたの経験は何ですか? 疑いを避けるために、これ以上の情報はありません。これは架空の質問であり、決定を下す必要がある人が利用できるさまざまなオプションと代替案を詳述した回答のリストを引き出したいと思います。

12
I / Oを試行せずに、ピアがTCPソケットを正常に閉じたことを検出できないのはなぜですか?
最近の質問のフォローアップとして、TCPソケットの読み取り/書き込みを試みない限り、ソケットがピアによって正常に閉じられていることを検出することがJavaで不可能である理由は何ですか?これは、かどうかに関係なく1回の使用前NIOの場合であるように思わSocketまたはNIO SocketChannel。 ピアがTCP接続を適切に閉じると、接続の両側のTCPスタックはその事実を認識します。サーバー側(シャットダウンを開始する側)は状態FIN_WAIT2になり、クライアント側(シャットダウンに明示的に応答しない側)は状態になりCLOSE_WAITます。なぜそこに方法はないSocketかSocketChannelという、基礎となるTCP接続が終了したかどうかを確認するためにTCPスタックを照会することができますか?TCPスタックがそのようなステータス情報を提供しないのですか?それとも、コストのかかるカーネルの呼び出しを回避するという設計上の決定でしょうか。 この質問に対するいくつかの回答を既に投稿したユーザーの助けを借りて、問題の原因がどこにあるのかがわかります。接続を明示的に閉じない側はTCP状態になりCLOSE_WAIT、接続はシャットダウンの処理中であり、側が独自のCLOSE操作を発行するのを待ちます。私はisConnected戻っtrueてisClosed戻ってくるのは十分に公正だと思いますfalseが、なぜそんなものがないのisClosingですか? 以下は、NIO以前のソケットを使用するテストクラスです。しかし、NIOを使用しても同じ結果が得られます。 import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) throws Exception { final ServerSocket ss = new ServerSocket(12345); final Socket cs = ss.accept(); System.out.println("Accepted connection"); Thread.sleep(5000); cs.close(); System.out.println("Closed connection"); ss.close(); Thread.sleep(100000); } } import java.net.Socket; public class MyClient { public static …

8
JavaソケットAPI:接続が閉じているかどうかを確認する方法は?
JavaソケットAPIでいくつかの問題が発生しています。ゲームに現在接続しているプレーヤーの数を表示しようとしています。プレーヤーがいつ接続したかは簡単に判断できます。ただし、ソケットAPIを使用してプレーヤーがいつ切断されたかを判断するのは不必要に難しいようです。 isConnected()リモートで切断されたソケットを呼び出すと、常に戻るように見えtrueます。同様に、isClosed()リモートで閉じられたソケットを呼び出すと、常に戻るように見えfalseます。実際にソケットが閉じられているかどうかを判断するには、データを出力ストリームに書き込み、例外をキャッチする必要があることを読みました。これは、この状況を処理するための本当に不潔な方法のようです。ソケットがいつ閉じられたかを知るために、ネットワークを介してゴミメッセージを絶えず送信する必要があります。 他の解決策はありますか?

9
Python [Errno 98]アドレスはすでに使用されています
私のPythonソケットプログラムでは、で中断する必要がある場合がありCtrl-Cます。これを行うと、を使用して接続が閉じsocket.close()ます。 しかし、それを再度開こうとすると、再び接続できるようになるまでに1分間かかるように見えます。ソケットを正しく閉じるにはどうすればよいですか?それともこれは意図されていますか?

7
CLOSE_WAITソケット接続を削除するにはどうすればよいですか
特定のポートでサーバーと対話する小さなプログラムを作成しました。プログラムは正常に動作しますが、次のようになります。 プログラムが予期せず終了した後、そのソケット接続がCLOSE_WAIT状態で表示されてから。プログラムを実行しようとすると、ハングし、強制的に閉じる必要があり CLOSE_WAITます。これにより、さらに多くのソケット接続が蓄積されます。 これらの接続をフラッシュする方法はありますか?
91 linux  sockets 

10
複数のプロセスがリスニングソケットを共有する方法はありますか?
ソケットプログラミングでは、リスニングソケットを作成し、接続するクライアントごとに、クライアントの要求を処理するために使用できる通常のストリームソケットを取得します。OSは、バックグラウンドで着信接続のキューを管理します。 2つのプロセスが同じポートに同時にバインドすることはできません-とにかく、デフォルトで。 プロセスの複数のインスタンスを起動する方法(よく知られているOS、特にWindowsの場合)があり、それらがすべてソケットにバインドされ、キューを効果的に共有する方法があるかどうか疑問に思っています。次に、各プロセスインスタンスをシングルスレッド化できます。新しい接続を受け入れるときにブロックするだけです。クライアントが接続すると、アイドルプロセスインスタンスの1つがそのクライアントを受け入れます。 これにより、各プロセスが非常にシンプルなシングルスレッド実装を持ち、明示的な共有メモリを介さない限り何も共有せず、ユーザーはより多くのインスタンスを起動して処理帯域幅を調整できます。 そのような機能はありますか? 編集:「なぜスレッドを使用しないのですか?」明らかにスレッドはオプションです。ただし、1つのプロセスに複数のスレッドがある場合、すべてのオブジェクトは共有可能であり、オブジェクトが共有されないようにするか、一度に1つのスレッドからしか見えないようにするか、完全に不変であり、最も人気のある言語となるように細心の注意を払う必要があります。ランタイムには、この複雑さを管理するための組み込みサポートがありません。 少数の同一のワーカープロセスを開始することで、デフォルトが共有されない並行システムが得られ、正確でスケーラブルな実装を構築することがはるかに容易になります。

5
ソケット操作のタイムアウトの設定
ソケットを作成するとき: Socket socket = new Socket(ipAddress, port); IPアドレスが使用できないため、例外がスローされますが、これは問題ありません。(テスト変数whereString ipAddress = "192.168.0.3"およびint port = 300。) 問題は、そのソケットのタイムアウトに設定するにはどうすればよいですか? ソケットを作成するときに、UnknownHostExceptionを取得してソケットをタイムアウトにするまでの時間を短縮するにはどうすればよいですか?
86 java  sockets 

3
sock send()コマンドで「リソースが一時的に利用できなくなりました」の原因
Resource temporarily unavailableソケットsend()コマンドでエラーを引き起こす原因は何ですか?ソケットはとして設定されAF_UNIX, SOCK_STREAMます。ほとんどの場合は機能しますが、このエラーが発生することがあります。ソケットの受信側は正常に機能しているようです。 これはあまり詳細ではないことは知っていますが、私は一般的なアイデアを探しています。ありがとう!
85 c  linux  sockets  unix 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.