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

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

5
WebSocketを正しく閉じる(HTML5、JavaScript)
私はHTML5 WebSocketをいじっています。私はどうやって接続を優雅に閉じるのですか?たとえば、ユーザーがページを更新したり、ブラウザを閉じたりするとどうなりますか? ユーザーが呼び出しをせずにページを更新しただけでは奇妙な動作が発生しますwebsocket.close()-更新後に戻ったときにwebsocket.oncloseイベントにヒットします。

3
同じソケットでsend / recvへの並列呼び出しは有効ですか?
同じソケットで、あるスレッドからsendを呼び出し、別のスレッドからrecvを呼び出すことはできますか? 同じソケットの異なるスレッドから複数の送信を並行して呼び出すことはできますか? 優れた設計ではこれを回避する必要があることはわかっていますが、これらのシステムAPIの動作は明確ではありません。私も同じことに関する良いドキュメントを見つけることができません。 方向へのポインタがあれば役立ちます。
127 c  networking  sockets 

4
ソケットAPIのaccept()関数はどのように機能しますか?
ソケットAPIは、TCP / IPおよびUDP / IP通信(つまり、私たちが知っているネットワークコード)の事実上の標準です。ただし、そのコア機能の1つは、accept()少し不思議です。 セミフォーマルな定義を借用するには: accept()はサーバー側で使用されます。リモートクライアントから新しいTCP接続を作成するために受信した着信試行を受け入れ、この接続のソケットアドレスペアに関連付けられた新しいソケットを作成します。 つまり、acceptサーバーが新しく接続されたクライアントと通信できる新しいソケットを返します。(accept呼び出された)古いソケットは開いたままで、同じポートで新しい接続をリッスンします。 どのように機能しacceptますか?どのように実装されていますか?このトピックについては多くの混乱があります。多くの人が受け入れて新しいポートを開いたと主張し、あなたはそれを通してクライアントと通信します。しかし、新しいポートが開かれていないため、これは明らかに真実ではありません。実際には、同じポートを介して異なるクライアントと通信できますが、どうやって?複数のスレッドrecvが同じポートを呼び出す場合、データはどこに行くべきかをどのようにして知るのでしょうか? それは、ソケット記述子に関連付けられているクライアントのアドレスの行に沿ったものだと思います。データがrecvそれを通過するときはいつでも、正しいソケットにルーティングされますが、よくわかりません。 このメカニズムの内部の仕組みについて徹底的に説明していただければ幸いです。
126 networking  sockets  tcp 

5
TCP:2つの異なるソケットがポートを共有できますか?
これは非常に基本的な質問かもしれませんが、それは私を混乱させます。 接続された2つの異なるソケットがポートを共有できますか?10万を超える同時接続を処理できるアプリケーションサーバーを作成していますが、システムで使用できるポートの数は約60 k(16ビット)です。接続されたソケットは新しい(専用)ポートに割り当てられるため、複数のソケットが同じポートを共有できない限り、同時接続の数はポートの数によって制限されます。だから質問。 事前に助けてくれてありがとう!


7
socket.shutdownとsocket.close
私は最近、次のようなコードを少し見ました(もちろん、sockはソケットオブジェクトです)。 sock.shutdown(socket.SHUT_RDWR) sock.close() ソケットでshutdownを呼び出してソケットを閉じる目的は何ですか?違いがある場合、このソケットは非ブロッキングIOに使用されています。

6
ソケットconnect()とbind()
connect()とbind()システムコールの両方が、ソケットファイル記述子をアドレス(通常はip / portの組み合わせ)に「関連付け」ます。彼らのプロトタイプは次のようなものです- int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); そして int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 2つの呼び出しの正確な違いは何ですか?とき1を使うべきconnect()ときとbind()? 具体的には、一部のサンプルサーバークライアントコードで、クライアントが使用してconnect()おり、サーバーがbind()呼び出しを使用していることがわかりました。理由は完全にはわかりませんでした。


4
TCPループバック接続とUnixドメインソケットのパフォーマンス
同じデバイスで実行されているサーバーとの通信を必要とするAndroidおよびiOSベースのアプリケーションでの作業。現在、アプリとサーバーとの通信にTCPループバック接続を使用しています(ユーザー層で作成されたアプリ、Android NDKを使用してC ++で作成されたサーバー) 相互通信をUnixドメインソケットに置き換えるとパフォーマンスが向上するのだろうか。 または一般的に、Unix DomainソケットがTCPループバック接続よりも優れたパフォーマンスを提供することを証明する証拠/理論はありますか?

4
単純なソケットをSSLソケットに変える
ソケット(「クライアント」と「サーバー」)を使用する単純なCプログラムを作成しました。(UNIX / Linuxの使用) サーバー側は単にソケットを作成します: sockfd = socket(AF_INET, SOCK_STREAM, 0); そして、それをsockaddrにバインドします。 bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)); そして聞いて(そして受け入れて読んで): listen(sockfd,5); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); read(newsockfd,buffer,255); クライアントはソケットを作成してから、ソケットに書き込みます。 今、私はこの単純な接続をSSL接続に変換したいと思います。 OpenSSLをプロジェクトに追加しようとしましたが、必要なものを実装する簡単な方法が見つかりません。
115 c  linux  sockets  unix  ssl 


13
接続拒否エラーの理由は何ですか?
別のクライアントを使用してCでサーバープログラムを作成しようとしています。たとえば、ポート2080を介して接続しようとすると、このエラーが発生します。 connection refused このエラーの原因は何ですか?

6
JavaScriptを使用してブラウザからTCPソケットに接続する
ソケットを開いてそれをリッスンするvb.netアプリケーションがあります。 ブラウザで実行されているJavaScriptを使用して、このソケット経由でそのアプリケーションと通信する必要があります。つまり、このソケットでデータを送信して、このソケットをリッスンしているアプリがそのデータを取得し、いくつかのリモート呼び出しを使用して何かを行い、さらにデータを取得して、JavaScriptが必要とするソケットに戻す必要があるそれをブラウザで読んで印刷してください。 私は、socket.io、websockifyを試しましたが、有用であると証明されたものはありません。 したがって、質問、私が試みていることは可能ですか?ブラウザで実行されているjavascriptがtcpソケットに接続してデータを送信し、ソケットでさらにデータレスポンスをリッスンしてブラウザに出力する方法はありますか。 これが可能である場合、目標を設定するのに役立つ正しい方向に私を向けることができます。


5
Linux:タイムアウトのあるソケットからの読み取りまたは受信がありますか?
タイムアウト付きのソケットからデータを読み取るにはどうすればよいですか?私は知っています、select、pselect、poll、timeoutフィールドがありますが、それらを使用すると、tcp renoスタックの「tcp fast-path」が無効になります。 私が持っている唯一のアイデアは、ループでrecv(fd、...、MSG_DONTWAIT)を使用することです
105 c  linux  sockets  tcp 

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