問題タブ [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.

0 投票する
2 に答える
636 参照

java - J2EEコンテナは直接サーバーソケットを許可しますか?

奇妙に聞こえるかもしれませんが、質問があります。
J2EEコンテナーが、デプロイされたアプリケーションに、独自の目的で直接サーバーソケットを開く(基本的にコンテナーをバイパスする)ことを許可するかどうかを知りたいと思います。
それをやりたいのはおかしいと思いますが、私が尋ねている理由は、javax.xml.endointをコンテナーで開始できないことを読んだので、これが理由かどうか疑問に思っていたからです。

更新:このPOSTの回答は、私には矛盾しているようです。1つの回答(andriによる)は、EJB仕様が禁止されていることを示していますが、Codemwnciによるもう1つの回答(Hippoからのコメントに裏付けられています)は、本番環境で使用されているものであると述べています。この投稿から何を結論付けるのかわかりません。誰かがこれをクリアするのを手伝ってもらえますか?

ありがとうございました。

0 投票する
2 に答える
210 参照

java - 何が間違って行われていますか? (Javaサーバー/ソケットプログラミング)

サーバーとソケットを接続するのに少し問題があります。IPが有効であることを確認したので、アドレスが一致しないという問題ではありません。また、一致しないのはポートではありません(これもテストしました)。

以下はサーバーハンドラです

そしてこれがソケットコネクタ

p>

まず、ローカルでテストしてみました。自分の IP と IP 127.0.0.1 を入力すると、どちらもローカルにセットアップしたサーバーに接続されました。しかし、別の IP から試してみたところ、次のようになりました。接続を確立していたスレッドがしばらくフリーズした後、単純に例外までスキップして、ホストが見つからないことを伝えましたが、ホストは接続を受け入れたとは決して言いませんでした。それが役立つ場合は、ポート 4424 を使用してサーバーに接続しています。私のコードでこれを引き起こす可能性のあるものはありますか、またはこれを防ぐために私がしていないことはありますか?

また、十分な情報を提供していない場合はお知らせください。私は多くのテストを行ってきましたが、何が間違っているのかを理解するためにさらに多くのことを行うことができます.

0 投票する
1 に答える
95 参照

c - 初めてソケットから読み取ろうとすると失敗しますが、正常に動作します

サーバーを立ち上げようとしています。firefox をクライアントとして使用するつもりです。アイデアは、コンピューター内のディレクトリの特定のパスとサーバーを書き留めて、そのディレクトリの内容を表示することです。

私はそれをバインドしたソケットを作成しました。接続があるたびに、サーバーはソケットからリクエストを読み取り、適切なディレクトリを開きます。

問題は、私がしたいパスを初めて下ったときです。Firefox はサーバーを永遠に待っているように見えますが、サーバー側からは、サーバーはポートを読み取るために何かが書き込まれるのを待っているようです。Firefox を停止して更新すると、すべてがスムーズに実行されます。

何か不足していますか?:/ コーディングが必要な場合はお知らせください

0 投票する
1 に答える
4384 参照

windows-7 - Windows7でServerSocketへの着信接続を許可するにはどうすればよいですか?

Javaを使用してカスタムhttpサーバーを作成しました。XPマシンで正しく動作し、別のマシンからそのサーバーへの接続を開いたときに、そのIPアドレスとポートを使用して動作していました。しかし、Windows7では機能していません。ファイアウォールを見ると、いくつかのルールが表示されています。着信接続を許可するためにどのルールを有効にする必要があるかを誰かが教えてくれれば素晴らしいと思います。

よろしく、ラリス

0 投票する
2 に答える
690 参照

java - ファイルを転送するソケット

次のようなJavaサーバークラスがあります。

` そして、クライアントは次のようになります:

1 つの質問は、ループがファイルの最後で止まらないのはなぜですか? 2 番目の質問は、なぜ も非常に遅いのかということです。

0 投票する
1 に答える
3355 参照

android - Android Bluetooth サーバー ソケットは、複数の接続を処理する場合、accept() でブロックされます。

私はアンドロイドBluetoothの例を研究しました。
私が混乱しているのは、他のデバイスが接続要求を送信しており、以前の接続が存在していた場合、サーバーが受け入れられずに長い間ブロックされていることです。

サーバーソケットを実行し、1 つの接続だけでなく多くの接続を受け入れることができる Android デバイスは可能ですか? サーバーがaccept()によってブロックされる原因となる理由はありますか?たとえば、UUIDが正しくないなどの理由はありますか?

私は次のように操作を行います、

  1. 最初の接続では、サーバーソケットを作成し、接続を待ちます
  2. クライアント B が接続要求を送信する
  3. サーバーソケット受け入れ
  4. I/O ストリームを処理する
  5. 同じサーバーソケットを使用して、再度接続を待ちます (サーバーソケットを閉じません)
  6. クライアント C が接続要求を送信する
  7. サーバーソケットは、受け入れられるのではなく、ブロックされ、ブロックされ、ブロックされます...

最初の接続が成功し、2 番目の接続で UUID を変更しないためです。したがって、UUIDは重要ではないと思います。最初の接続が確立されると、サーバーソケットは別の接続を待ちます。悲しいことに、最初の接続として受け入れず、待機してブロックするだけです。

これは、サーバー ソケット スレッドの一部です。2 番目の接続を作成するときはいつでも、logcat はログ「[ServerSocketThread] Enter while loop. 」の後に停止することを示しています。操作はaccept()でブロックされているようですが、serversocket は mmServerSocket の IOException をスローしませんでした。受け入れる()

2番目の接続を作成したい場合、ソケットが受け入れられず、例外がスローされず、そこでブロックされている理由がわかりません。考えられる理由や提案があれば幸いです。

アプリケーションを実行したときのカタログを次に示します。問題の特定に役立つことを願っています。

パート A : 正常な接続と最初の接続です

パート B : 2 回目の接続で、serversocket が受け入れられずにブロックされます。

パート A のようにBluetoothSppServiceを実行していなかったようですが、BluetoothSppServiceは andorid フレームワークの下位層であるため、処理方法がわかりません。

パート C: 以前の既存の接続を切断すると、次のように実行されます。そしてパート A を走らせます。

BluetoothSppプロキシ オブジェクトを作成し、BluetoothSppServiceを実行します。

logcat はパート A のように見えるようで、conntion を確立できます。サーバーソケットが受け入れられずにブロックされた理由は、これらの操作が下位レベルの Android プラットフォームによって処理されるためだと思いました。しかし、 BluetoothSppServiceJBtlSppNativeJBtlBmgなどのこのサービスを取得する方法や実行する方法がわかりません。

その経験はありますか?
はいの場合は、私と共有していただければ幸いです。または、以前の接続が存在する場合に、デバイスが別の接続を受け入れることができるようにする方法についてのヒントや提案を教えてください。

0 投票する
2 に答える
2926 参照

java - Java - 「利用可能なバッファ領域がありません」ソケットエラーの原因?

私はJavaでネットワーキングプログラムを書いています。ServerSocket および Socket オブジェクトを使用して、TCP を使用してメッセージを送受信します。私のプログラムは、短時間実行すれば問題なく動作しますが、長時間実行すると、次のエラーが発生します。

すべてのソケットを閉じていないためかもしれないと思いましたが、コードを変更しました。新しいソケットが必要なときに作成するクラスが 1 つあり、それを閉じるために finalize メソッドを追加しました。ServerSocket を閉じるための finalize メソッドもあるので、何が問題なのかわかりません。

また、エラーが発生した後、すぐにプログラムを再実行すると、以前よりも早く問題が発生します。その後、しばらく待って実行すると、元の時間のように戻ります。

私は本当に問題を解決することができず、私は何年もの間それを理解しようとしてきました. 誰が問題が何であるか知っていますか?

前もって感謝します!

アップデート:

だから私はエラーがどこから来ているのかを理解しました、そしてそれは本当に奇妙です. 問題を引き起こしている次のコードがあります。

ご覧のとおり、コードはソケットを開いて書き込む必要があります。ただし、上記のようにすべての機能コードがコメントアウトされている場合でも、ソケットが開かれてすぐに閉じられても、「バッファ領域がありません」というエラーが発生します。

これがなぜなのか、私には本当にわかりません。プログラムはマルチスレッド化されており、各スレッドは上記のメソッドを使用して定期的にオブジェクトを作成し、それを呼び出します。ソケットを作成して閉じる行が削除されると、エラーは発生しなくなりますが、そこにある場合、ソケットを開いてすぐに閉じてもエラーが発生します。

なぜこれが起こっているのか、誰にも手がかりがありますか?

どうもありがとう。

0 投票する
2 に答える
2041 参照

java - Java マルチスレッド サーバー - 各接続がデータを返します。メインスレッドで処理?

新しい接続を無期限に待機し、それぞれをスレッドで処理する統合サーバーを備えたクライアントを作成しています。

受信したバイト配列を、メイン スレッドのシステム全体で使用可能なメッセージ ハンドラーで処理したいと考えています。ただし、現在、処理は明らかにクライアント スレッドで行われます。

Futures、ExecutorService の submit() を見てきましたが、サーバー内でクライアント接続を作成すると、データがサーバー スレッドに返されます。サーバーをブロックせずに処理するために、そこからメイン スレッド (同期されたパケット ストア内でしょうか?) に戻すにはどうすればよいですか?

私の現在の実装は次のようになります。

更新:堅牢な方法は、TomTom が提案したもののようです - 代わりに新しい java.nio を使用します。このプロジェクトは使用が制限されており、実験的なものであるため、java.io/java.net で使用する最良の方法を知りたいです :)

0 投票する
2 に答える
7704 参照

java - ServerSocket accept() がソケットを「リッスン」モードにするのを待っています

単体テストを実装するには、単純なクライアント サーバー通信が必要です。

私の手順:

  1. サーバー スレッドの作成
  2. サーバースレッドがサーバーソケットをリッスンモードにするのを待ちます ( serverSocket.accept() )
  3. クライアントの作成
  4. いくつかのリクエストを行い、レスポンスを確認します

基本的に、ステップ 2 に問題があります。サーバーソケットが「リッスン」状態になったときに通知する方法が見つかりません。この場合、「accept」への非同期呼び出しが行われますが、Java はこれをサポートしていません (非同期チャネルのみをサポートしているようで、ドキュメントによると「accept()」メソッドと互換性がありません)。

もちろん、単純な「スリープ」を入れることはできますが、それは本番コードの実際の解決策ではありません。

要約すると、スリープやポーリングを使用せずに ServerSocket がリッスン モードになったことを検出する必要があります。

0 投票する
2 に答える
298 参照

java - サーバーとクライアント間の接続の確立中に例外がキャッチされました...!

こんにちは、クライアントとサーバー用のプログラムを作成しました。「127.0.0.1」または「localhost」を入力している間は完全に機能しますが、自分のIPを割り当てているか、友人のIPの一部である可能性があります。それは機能せず、このような例外を与えます

私を助けてください男の... !!