問題タブ [serversocket]
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.
java - (Java で) localhost からの接続のみをソケットに受け入れるにはどうすればよいですか?
ServerSocket で接続をリッスンする Java アプリ (アプリケーション コンテナーで実行されていない) があります。localhost からの接続のみを受け入れるようにしたいと思います。現在、接続が受け入れられた後、ピア IP をチェックし、ループバック アドレスでない場合は拒否しますが、ピア IP アドレスがスプーフィングされる可能性があることはわかっています。したがって、可能であれば、ループバック インターフェイスのみをリッスンするソケットにバインドすることをお勧めします。これは可能ですか?
bind() を呼び出すときに "127.0.0.1" をローカル アドレスとして指定するなど、いくつかの方法を試しましたが、うまくいきませんでした。前もって感謝します。
ご協力ありがとうございました。これがすべて私の間違いだったことを認めるのは恥ずかしい. 私たちのアプリケーションは 2 つの異なるポートでリッスンします。一方をループバック インターフェイスにバインドし、もう一方をテストしていました。実際に正しいポートに telnet で接続しようとすると、すべて正常に動作します (つまり、"127.0.0.1" へのバインドは想定どおりに動作します)。
ループバック アドレスのスプーフィングについては、その通りです。それを第一の関心事のように聞こえるようにするべきではありませんでした。実際、望ましい動作はローカル接続のみを取得することであり、ローカル インターフェイスのみにバインドすることは、すべての接続を受け入れてから非ローカル接続を閉じるよりも直接的な方法です。
python - BaseRequestHandlerへのPythonアクセス
私のコードは基本的に、クライアントとの単純なチャットサーバーを起動する必要があります。サーバーとクライアントが相互に通信できる場所。すべてが正しく実装されましたが、完了するたびにサーバーをシャットダウンする方法がわかりません。(私はそれがだと知っていss.shutdown()
ます)。
2人で共有しているキーワード(のようなもの)に基づいて今すぐ終了したいのですが、メッセージを受信するたびに、からに"bye"
メッセージを送信できるかどうかわかりません。SocketServer
BaseRequestHandler
shutdown()
最終的に、私の目標はTkinter
GUIを作成するために組み込むことですが、他のすべてを最初に機能させたいと思っていました。Pythonでソケットを扱うのはこれが初めてです。
ええ、私はsetup()がtryとcatchsで今のところひどい関数であることを知っています、しかしそれは今のところ機能するので、後でそれを修正するつもりでした。
私の質問は基本的に、受信したメッセージに基づいてサーバーを実際に終了させるにはどうすればよいですか?可能であれば、要求ハンドラーの開始後にアクセスする方法はありますか?
java - Socket と ServerSocket の違いは何ですか?
Socket
クライアント側を表し、サーバー側を表す場合、サーバー側からデータを読み取るのはServerSocket
なぜですか? Socket.read
私は本当に混乱しています、私にそれを明確にしてもらえますか?
java - Java ソケット受け入れキューの長さ
ServerSocketに関するSunのドキュメントによると:
着信接続表示 (接続要求) の最大キュー長は 50 に設定されています。キューがいっぱいのときに接続表示が到着すると、接続は拒否されます。
キューの長さを増やすにはどうすればよいですか? それは私のサーバーのボトルネックです。
ありがとうございました。
apache-flex - イントラネットまたはインターネットを介したソケット接続の完了
ピアツーピア バイナリ ソケット プログラムを作成しています。エンドポイントは 2 つだけです。ラップトップ システムで 1 つのソケットがリッスンしています。もう 1 つのソケットは、デスクトップ システムからブロードキャストしています。ホストされたサーバーで実行されている3番目のプログラムがあり、2つの間の接続を仲介するために利用できます。私の問題は、ラップトップとデスクトップが同じネットワーク上にある場合、両方とも同じインターネット IP アドレスを持ちますが、イントラネット IP が異なりますが、ラップトップが移動中の場合、IP アドレスが異なることです。真のピア ツー ピアにするためには、接続が確立された後、2 台のコンピューターが相互に直接通信するように記述する必要があります。2 台のコンピューターが同じネットワーク上で実行されている場合、これらのコンピューターが同じ IP アドレスを共有する可能性がある場合、これは一般的にどのように達成されるのでしょうか?
java - Linux 上の Tomcat6 は、ServerSocket がアイドル状態のときは常に 100% の CPU を使用します
ご挨拶
Ubuntu8.04 の Java6 の Tomcat6 で webapp を実行しています。このアプリのメイン サーブレットは、次の簡単なコードで ServerSocket を開きます。
もちろん、これは別のスレッドで実行され、必要な try-catch ブロックが使用されます。
Tomcat を起動すると、すぐに CPU 負荷が 100% になり、クライアントがポート 6767 に接続するまでその状態が続きます。クライアントが接続されている限り、負荷は 0% になります。クライアントが切断されるとすぐに、負荷は 100% に戻ります。
誰がこれが何について教えてくれますか?
ありがとう!
解決:
以下の両方の回答は非常に役に立ちました。この問題は、実際には ServerSocket とは関係ありませんでしたが、アプリのまったく別のスレッドでのスリープレス while ループと関係がありましたが、クライアントが接続されているかどうかにも依存していました。
JDK コマンド「jstack」でアクティブなスレッドを特定できたので、ランナウェイ ループのあるスレッドを簡単に見つけることができました。
助けてくれてありがとう!:)
android - ServerSocket オブジェクトが 3G で接続要求を受け入れることは可能ですか?
Droid から Droid 3G への接続をセットアップしようとしています。すべてがwifiモードでうまく機能することを確認できます. Droid は 3G で接続要求 (Http、Telnet、raw ソケット) を行うことができますが、Droid に 3G モードでソケット接続を受け入れるようにさせることができません。私は java.net.ServerSocket クラスを使用しています。
3G 経由でソケット接続要求を受け入れるように Droid をプログラムする方法を知っている人がいたら、返信してください。また、これが許可されていない理由を知っている方がいらっしゃいましたら、ご回答ください。
ご覧いただきありがとうございます。
ブルクウィンデック
delphi - ServerSocket から接続 ID を取得する
ServerSocket から接続 ID を取得する必要があります。クライアントごとにテキストを送信し、どのクライアントがテキストを送信したかを知る必要があります。何か案は??
java - Javaプログラムがリッスンできるインターネットアドレスを見つける方法
私のプログラムは着信ソケット接続をリッスンする必要があります (ポート 8765 に同意します) が、特定のマシンでバインドできるアドレスを認識していません。もちろん、単純にそれらすべてをリッスンすることもできますが、ポート 8765 で私をリッチにするために試行すべきアドレスを、別の (より遅い) チャネルを介してクライアント プログラムに送信する必要があります。
ということで、流れはこんな感じ。
- 私のプログラムは、ポート 8765 で使用可能なすべてのインターフェイスでリッスンします。
- 到達できる可能性のある inet4 アドレスのリストを見つけます (このステップが実際の問題です)。
- ホワイトボードへの投稿 (ブログ投稿など)
- 興味のあるクライアントは、それらすべてを試して、どれを使用して私のプログラムに到達できるかを確認します.
もちろん、これはすべてJavaで行うことです:)
java - 2つのクライアントソケットを接続します
Javaに2種類のソケットがあるとしましょう。
- サーバーソケット「ServerSocket」
- クライアントソケットまたは単に「ソケット」
2つのプロセスの状況を想像してみてください。
X=クライアント
Y=サーバー
サーバープロセスY:には、TCPポートをリッスンしている「ServerSocket」があります
。クライアントプロセスX:は、「ソケット」を介してYに接続要求を送信します。
Y:次に、accept()
メソッドは新しいクライアントタイプ「ソケット」を返します。
それが発生すると、2つのソケットは「相互接続」されます。
つまり、クライアントプロセスのソケットは、サーバープロセスのソケットに接続されています。
次に、ソケットXを介した読み取り/書き込みは、ソケットYを介した読み取り/書き込みに似ています。
これで、2つのクライアントソケットが相互接続されます。
しかし...
同じプロセスで2つのクライアントソケットを作成し、それらを「相互接続」したい場合はどうなりますか?
...可能ですか?
中間のServerSocketを使用せずに2つのクライアントソケットを相互接続する方法を考えてみましょう。
Aを継続的に読み取ってBを書き込むためのスレッドと、Bを読み取ってAを書き込むためのスレッドを2つ作成することで解決しました...
しかし、もっと良い方法だと思います...(これらの世界的なエネルギーを消費するスレッドは必要ありませんクライアントサーバーアプローチを使用)
どんな助けやアドバイスもいただければ幸いです!! ありがとう
編集:
アプリケーションの例:「既存のサーバーアプリケーションをクライアントアプリケーションに変換できます」、たとえば、VNCサーバーでは、1つのクライアントソケットがVNCサーバーに接続し、他のクライアントソケットが作成され(中間サーバーに接続するため)、アプリケーションが作成されます。 2つのクライアントを相互接続すると、VNCサーバーがクライアントアプリケーションになります。そして、パブリックIPは必要ありません。
VNCServer --- MyApp--->|中間サーバー| <---ユーザー