問題タブ [localserversocket]

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 投票する
3 に答える
3726 参照

c - Scapy で C ソケットに話しかける

UDP 接続が確立されており、ポート (localhost) でリッスンしています。ローカルホストからも Scapy パケットを送信しようとしています。何らかの理由で、C コードが実際にパケットをキャプチャすることはありませんが、Wireshark でパケットが正常に表示されることは確認できます。ソケットを使用してからしばらく経ちましたが、設定する必要がある特別なソケット オプションがいくつかありますか、それとも Wireshark では問題なくパケットを表示できるのに、C ソケットでは表示できないのはなぜですか?

注: (localhost から) パケットを送信するための対応するソケット コードを記述したとき、パケットを正常にキャッチできましたが、別のコンピューターから送信されたときにパケットをキャッチするためのリッスン コードをまだ取得できません。

同様の質問を見つけましたが、(TCP の代わりに UDP を使用して) 彼らのアプローチを試みたとき、まだ netcat に Scapy パケットをキャッチさせることができませんでした。

Cコード(わかりやすくするために要約)

スキャピースクリプト

0 投票する
0 に答える
1138 参照

java - ローカル ServerSocket の OutputStream への書き込み時に ECONNRESET (ピアによる接続リセット) が観察される

こんにちは、私は同様の質問への回答を読みましたが、どれも私が直面している問題を解決できませんでした。

ステップ 1.) ServerSocket (localhost ポート 8675) を作成し、ソケットを受け入れ、対応する OutputStream を取得します (これには非同期タスクを使用します)。

step2.) データのチャンクを byte[] (12kb) として取得します。

ステップ 3.) この 12kb バイト [] を出力ストリームに書き込みます。

最初のチャンクの書き込みは成功しましたが、次のチャンクを書き込もうとすると、このエラーに直面します。

03-27 21:13:00.275 W/System.err(28866): java.net.SocketException: sendto に失敗しました: ECONNRESET (ピアによる接続のリセット)

03-27 21:13:00.275 W/System.err (28866): libcore.io.IoBridge.maybeThrowAfterSendto (IoBridge.java:506) で

03-27 21:13:00.275 W/System.err (28866): libcore.io.IoBridge.sendto (IoBridge.java:475) で

03-27 21:13:00.275 W/System.err(28866): java.net.PlainSocketImpl.write (PlainSocketImpl.java:507) で

03-27 21:13:00.275 W/System.err(28866): java.net.PlainSocketImpl.access$100 (PlainSocketImpl.java:46) で

03-27 21:13:00.275 W/System.err(28866): java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:269) で

これらは、サーバーソケットを作成し、出力ストリームを取得するためのコードブロック非同期タスクです

今、私が得る byte[] チャンクを書くために

関連するコードのみを追加したいくつかのポイント。

これらは、成功したと思われる最初のデータ書き込みのログです

03-27 21:13:00.150: 長さ =12288 の着信データ

03-27 21:13:00.155 : サーバーソケット開始の doInBackground

03-27 21:13:00.155 サーバー ソケットの doInBackground 開始キュー データ len12288

03-27 21:13:00.155 バッファ サイズ = 12288

03-27 21:13:00.155 ソケットにバッファを書き込みます 03-27 21:13:00.160 ソケットをフラッシュします

03-27 21:13:00.160 doInBackground 実行終了

2 回目のデータ書き込みログは次のとおりです。

03-27 21:13:00.275 長さ =12288 の着信データ

03-27 21:13:00.275 サーバー ソケットの doInBackground 開始

03-27 21:13:00.275 サーバー ソケットの doInBackground 開始キュー データ len12288

03-27 21:13:00.275 バッファ サイズ = 12288

03-27 21:13:00.275 ソケットへの書き込みバッファ

03-27 21:13:00.275 W/System.err(28866): java.net.SocketException: sendto に失敗しました: ECONNRESET (ピアによる接続のリセット)

03-27 21:13:00.275 W/System.err(28866): $writetask.doInBackground(SampleServiceImpl.java:360) で // 書き込みに失敗する

これが発生する理由は、出力ストリームが高速な間隔でデータのチャンクを書き込む必要があるためです(ローカルソケットではるかに高速な書き込み速度をテストしたため、疑わしいです)。

親切なアドバイス。ありがとう

0 投票する
4 に答える
4504 参照

c - ループ中のソケットサーバーで明確化が必要

以下は、ソケット サーバーのコードの一部です。いくつかの手順について明確ではないので、いくつか質問があります。私の質問は以下のとおりです。

  1. while (1) を使用する必要があるのはなぜですか?
  2. exit (-1) の目的は何ですか? ソケットを閉じますか?
  3. data_len が 1 として初期化されるのはなぜですか?
  4. サーバーが稼働していて、クライアント側からのデータがない場合、サーバーはどうなりますか? 閉まりますか?

実際には、コードの以下の部分について詳細な説明が必要です。

0 投票する
0 に答える
1412 参照

android - Android ローカル ビデオ サーバー

ビデオをストリーミングするソケットを使用して、ローカル Web サーバーを作成しようとしています。

以下は、サーバー用の私のコードです。

したがって、問題は、例外がスローされた後に Web ブラウザーで URL をヒットするたびに発生します。

HttpUrlConnectionそして、すべてのバイトフレームを使用してこのファイルをダウンロードすると、最後を除いてダウンロードされ、同じ例外がスローされます。

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

java - TCP - localhost サーバーで 2 人のプレイヤー間で Java ゲームをプレイする方法

Two Dice Pig私はJavaで名前を付けたゲームを作りました。このゲームには、2 つのサイコロの面と、両方のプレーヤーのスコアと名前を表示するシンプルな GUI インターフェイスがあります。ゲームは、両方のプレイヤーの名前を尋ねる簡単なダイアログ メッセージで始まり、ゲームが開始されます。両方のプレイヤーは、1 つの GUI インターフェイスだけを操作し、自分の番が来たらプレイします。ゲームは完全にコード化されています。今、私が望んでいるのは、サーバーを作成することで(For now I want to try it on my local server)あり、両方のプレーヤーが独自の GUI を取得する必要があります。また、プレーヤー A がプレイしている場合、プレーヤー B はインターフェースで何もできないようにする必要があります。私はそれがクリアされることを願っています。これは私のネットワーキング プロジェクトですが、その方法がわかりません。どんな助けでも大歓迎です。

Note: I want to apply the same idea as これ man applied. Just watch only for 15 seconds. Thanks!