問題タブ [sockets]
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.
exception - での初回例外の: 0x000006BA: RPC サーバーが利用できません
「次の最初の例外: 0x000006BA: RPC サーバーを利用できません」とはどういう意味ですか?
このデバッグ メッセージは、ソケット接続を使用しているときにビジュアル スタジオ デバッガーのデバッグ出力に表示されますが、どの操作がこのメッセージを開始するのかわかりません...
.net - .NETでのTCP接続品質
クライアントとサーバー間のTCP接続を使用するミッションクリティカルなリアルタイムデータアプリケーションがあります。場合によっては、接続が定期的に停止します(SocketException)。問題ありません。再接続して先に進んでください。ただし、これらの断続的な接続の低下に顧客はわくわくしません。
指をどこに向けたらいいのか知りたいのですが。それはクライアントですか、それともサーバーですか?ハードウェアまたはソフトウェア?それはイーサネットリンクについての何かですか?最終的には、接続の状態を示すインジケーターがユーザーに表示されるため、不良リンクを調査して修正できます。
TcpClient、Socket、または接続の状態について教えてくれる他の何かからプルできるメトリックはありますか?おそらく、確認までの平均時間、再試行回数などですか?
特に、イーサネット接続全体だけでなく、TCP接続について知りたいです(LAN接続はダンディかもしれませんが、外部サーバーへの接続に問題がある可能性があります)。
もちろん、リモートホストにpingを実行することはできますが、それによって、探している種類の統計情報が実際に得られるとは思いません。一つには、サーバーがNATの背後に隠れている場合、ルーターにpingを実行している可能性があります。
linux - raw ソケットで着信パケットを破棄するには?
生のソケット (ICMP パケット用) からデータを読み取る Linux で C/C++ アプリケーションを作成しています。質問: ソケットでまだキューに入れられているすべてのデータを破棄する方法はありますか?
問題は、しばらくスリープした後、興味のないデータがソケットにキューに入れられていることです。select()/recvfrom() ループに入ると、最近受信したデータのみを取得できるように、ソケットに「現在バッファリングしたすべてのデータを忘れる」ように指示するのが最善です。
最初に別の poll()/recvfrom() ループに入るよりも良い方法はありますか? おそらくいくつかのソケットAPI呼び出し?ポータブルでも?:-)
python - 私は唖然: python とソケット + スレッドの奇妙な問題
http サーバーである python スクリプトがあります: http://paste2.org/p/89701、値以下の同時実行レベル (-c スイッチ) で ApacheBench (ab) に対してベンチマークするときソースコードのsocket.listen()-callで指定されたものはすべて正常に動作しますが、Apacheベンチの同時実行レベルをsocket.listen()-callの値よりも高くするとすぐにパフォーマンスが低下します。いくつかの例:
- socket.listen( 10 ) および ab -n 50 -c 10 http://localhost/ = 1200req/s
- socket.listen( 10 ) および ab -n 50 -c 11 http://localhost/ = 40req/s
- socket.listen( 100 ) および ab -n 5000 -c 100 http://localhost/ = 1000req/s
- socket.listen( 100 ) および ab -n 5000 -c 101 http://localhost/ = 32req/s
2 つの呼び出しの間でコードに変更はありません。何が問題なのかわかりません。この問題に 1 日悩まされています。また、次の点にも注意してください。同じコードの多重化バージョン (スレッド化されたバージョンと比較するために書いたもの) は、socket.listen() がどのように設定されているか、または apache の同時実行 (-c スイッチ) がどのように設定されているかに関係なく、正常に動作します。
私は、comp.lang.python と私のブログに投稿された IRC/python ドキュメントに 1 日を費やしました。助けて!
python - Twisted でソケットにタイムアウトを設定することは可能ですか?
私はおそらく愚かで、大きくて重要なものが欠けていることに気づきましたが、reactor.listenUDP を使用して twisted でタイムアウトを指定する方法がわかりません。私の目標は、タイムアウトを指定できるようにすることです。その時間が経過した後、DatagramProtocol.datagramReceived が実行されていない場合は、reactor.stop() を呼び出すために使用できるコールバックまたは何かを実行します。ヘルプやアドバイスをいただければ幸いです。ありがとう
c# - Send()が機能しない直後のUdpClient、Receive()?
次のコードを検討してください。
WireShark(ネットワークスニファ)によると、リモートホストはデータで応答しますが、ここのアプリケーションはデータを永久に待機します...何らかの理由でリモートホストから応答を受信しません。
何か案は?
python - ソケットを閉じていないcherrypy
私はcherrypyをWebサーバーとして使用しています。それは私のアプリケーションに良いパフォーマンスを与えますが、それには非常に大きな問題があります。開いているファイルが多すぎるため、ソケットを作成できなかったことを示すcherrypyが数時間後にクラッシュします。
私は何が起こっているのか理解しようとしました。私のアプリケーションはファイルやソケットなどを開きません。私のファイルはいくつかのバークレーデータベースしか開きません。この問題をさらに調査しました。/ proc / 4536 / fd/にあるid4536のcherrypyプロセスで使用されるファイル記述子を確認しました。最初は新しいソケットが作成され、適切にクリーンアップされましたが、1時間後、約509個のソケットがクリーンアップされていないことがわかりました。すべてのソケットはCLOSE_WAIT状態でした。次のコマンドを使用してこの情報を取得しました。
CLOSE_WAIT状態は、リモートクライアントが接続を閉じたことを意味します。なぜcherrypyはソケットを閉じず、ファイル記述子を解放しないのですか?問題を解決するにはどうすればよいですか?
私は以下で遊んでみました:
これにより、いつでも開くソケットの数が10に制限されると思いましたが、まったく効果がありませんでした。これは私が設定した唯一の構成であるため、残りの構成はデフォルト値を保持します。
誰かがこれに光を当てることができますか?チェリーピーのバグだと思いますか?どうすれば解決できますか?これらのソケットを自分で閉じる方法はありますか?
以下は私のシステム情報です:
CherryPy-3.1.0
Python 2.3.4
Red Hat Enterprise Linux ESリリース4(Nahant Update 7)
前もって感謝します!
java - リースの有効期限が切れた後、Java RMI がソケットを閉じない
RMI 対応アプリケーションがソケットをリークしているようです。RMI 経由でサービスを提供する Java アプリケーションがあります。Linux で動作する Java SE 1.6 RMI 実装を使用しています。私が観察している問題は、クライアントがレジストリを使用してリモート オブジェクトへの参照を取得した後、接続が突然切断された場合 (停電、ケーブルが抜かれているなど)、サーバーがソケットを開いたままにすることです。クライアントのリース期限が切れた後、RMI 実装がクリーンアップされることを期待していますが、そうはなっていません。unreferenced()
サーバーでは、リースの有効期限が切れるとリモート オブジェクトのメソッドが呼び出されますが、ソケットは netstat で "ESTABLISHED" 状態で無期限に表示されたままになります。
クライアントに特定の動作を強制することはできないため、数日後、Linux ディストリビューションでは、開いているファイル記述子のデフォルトの制限である 1024 に達し、サーバーが新しいソケットやファイルを開くことができなくなります。TCP キープアライブについて考えましたが、RMI はネットワーク層を抽象化しているため、接続が確立された後に実際のサーバー ソケットにアクセスすることはできません。
リース期限が切れたクライアント接続に関連付けられたソケットを RMI 層に強制的にクリーンアップさせる方法はありますか?
更新:私が使用したソリューションは、選択した回答に似ていますが、異なるアプローチを使用しています。カスタム ソケット ファクトリを使用し、createServerSocket() によって返された ServerSocket インスタンスを、accept() を除くすべてのメソッドを通過させる透過的なラッパーでラップしました。accpet メソッドでは、ソケットが返される前にキープアライブが有効になります。
android - AndroidでRawソケットを作成するには?
で作成しようRawSocket
としてAndroid
成功した人はいますか?
c++ - Cでソケット接続の帯域幅をどのように抑制しますか?
BSDソケットを使用してクライアントサーバーアプリを作成しています。バックグラウンドで実行し、データを継続的に転送する必要がありますが、通常の使用からネットワークインターフェイスの帯域幅を占有することはできません。インターフェイスの速度に応じて、この接続を特定の最大転送速度に調整する必要があります。
プログラムでこれを達成するための最良の方法は何ですか?