問題タブ [tcpsocket]

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

c# - C# でのソケット プログラミング

私はC#でソケットプログラミングをしようとしていますが、複数のクライアントを処理するためにサーバー側にソケットの配列が必要なのか、それともサーバー側の1つのソケットで多くのクライアントを処理するのに十分なのかを理解する必要があります。

また、サーバーからクライアントへのすべてのデータが到達したかどうか、およびサーバーの可用性を構成する必要があり、クライアント要求を破棄します。

各クライアントも処理するために複数のスレッドを作成する必要がありますか? そして、各クライアントを個別に処理する必要があります。

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

.net - vb.netのtcpクライアントがサーバーからデータ応答データ全体を受信して​​いない

TCPクライアントである小さなプログラムがあります。このクライアントからイーサネット経由でデバイスに文字列を送信します (TCP サーバーとして機能します)。デバイスが入力文字列を受信するとすぐに、応答データで応答します。私の問題は、サーバーから応答データ全体を取得できないことです。(デバイス)。

Returndata には、サーバー (デバイス) から返された完全な応答がありません。

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

c - unix tcp ソケット経由でバイナリ データを送信できません

fread()、fwrite()、send()、recv() などの通常の関数を使用して、ファイル転送用の UNIX ソケットを介して ftp コマンド GET および PUT を実装しようとしています。

テキスト ファイルでは問題なく動作しますが、バイナリ ファイルでは失敗します (diff によると、「バイナリ ファイルが異なります」)。

以下に関するご提案をお待ちしております。

  1. バイナリデータを読み書きするための特定のコマンドはありますか?
  2. diff を使用してバイナリ ファイルを比較できますか?
  3. メモリのチャンクでバイナリ部分を送信することは可能ですか?
0 投票する
4 に答える
1663 参照

java - ソケットを介した16進メッセージのマングル

CサーバーからJavaクライアントに16進メッセージを渡そうとしています。通信は機能します。しかし、Javaクライアントで取得した16進値には、「ff」が追加されているようです。なぜこうなった?

C側では、送信したいバイトを(16進数で)出力すると、問題ないように見えます。

以下のコードを参照してください。

Cサーバー:

Javaクライアント:

OutPut:lenの値= -36 buffer [5] = 0 buffer [6] = 0xfffffffdc

更新しました

これが私のwiresharkの出力です(これはCサーバーがJavaクライアントにプッシュするものです):

行5の「00dc」はdatalen=220に対応し、Javaクライアントのlenにそのまま保存する必要があることに注意してください。したがって、Javaクライアントには明らかにエラーがあります。皆さんがおっしゃったように、私はInteger.toHexString(((int)buffer [index])&0xFF)を使用して印刷できます。ただし、バイト配列を正しい16進値で格納する必要があります。助けてください

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

ruby - TCPSocket を使用して HTML フォーム POST からコンテンツを取得する

TCPSocket オブジェクトで「gets」メソッドを繰り返し使用すると、次の出力が表示されます

もう一度 .gets を使用すると、すべてがハングします。長さ 45 のこの「コンテンツ」を取得するにはどうすればよいですか? TCPSocket オブジェクトからこれを取得できますか、それとも何か他のものを使用する必要がありますか?

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

ruby - Ruby TCPSocketクライアントを閉じるときにストリームが閉じられました(IOError)

私はそれを閉じようとしているときを除いてうまく機能するRubyTCPSocketクライアントを持っています。以下のコードでdisconnectメソッドを呼び出すと、次のエラーが発生します。

(簡略化された)コードは次のとおりです。

このエラーを防止またはキャッチする方法はありますか?私はソケットプログラミングの専門家ではないので(明らかに!)、すべての助けに感謝します。

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

java - SocketException 接続リセット

TCP接続を受け入れるサーバーを作成しました。ソケットに接続した後、入力ストリームからデータを読み取るためにループします。

手順:

  1. サーバーを起動しました。
  2. クライアントを起動します。

今、私はクライアントを閉じています。

次に、サーバーから SocketException Connection Reset が返されます

入力ストリームから読み取る前に、クライアントが生きているかどうかを確認するにはどうすればよいですか。

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

c++ - 作成時に TCP ソケットが確実に接続されるようにする方法

TCP パケットを送信するクライアント アプリケーションがあります。現在、私のアプリケーションはこれを行っています: ソケットを作成し、パケットをバインドして送信します。

別のスレッドでは、アプリケーションが接続してパケットを送信します。

ここで、ローカルポートのポート範囲を指定したいので、コードを次のように変更しました

バインドが成功するまで、ポート範囲 ( 4000 - 5000 ) で nPortNumber をループします。

私は常に低いポートから nPortNumber を開始するため、ソケットが以前に同じポートで作成されている場合、WSAEADDRINUSE エラーを errorCode として受け取ります。これは、ソケット作成段階を既に通過しているため、私には遅すぎます。(bind() または connect() で WSAEADDRINUSE を取得しなかったのはなぜですか?)

以前に WSAEADDRINUSE を取得する方法はありますか、またはバインドして接続するポート範囲にソケットを作成する方法はありますか?

前もって感謝します!

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

flash - TCP ソケットを介したむらのある接続を確実に処理する方法は?

TCP ソケット経由でリモート サーバーと通信するクライアントを構築しています。場合によっては、クライアントがサーバーにメッセージを渡したり、サーバーがクライアントにメッセージを渡したりします。

これはラップトップで実行されるため、接続はかなり不安定になります. Wi-Fi が失われる可能性があり、ラップトップをスリープ状態にして後でウェイクアップする可能性があります。接続の切断を検出するためにピンポン システムを実装しています (すべて同じソケット上で、クライアント ping、サーバー ポン)。 .

ping が失敗した場合はどうすればよいですか? (または、クライアントが確認応答されないメッセージを送信した場合) 次のいずれかを実行できます。

  1. ping が返ってくるまで ping し続けます
  2. ソケットを閉じ、接続が成功するまでソケットの接続を繰り返し試行します

オプション 1 は明らかに少し単純ですが、それで希望する動作が得られるかどうかはわかりません。サーバーが接続の側を閉じた場合はどうなりますか? また、たとえば、ラップトップに Wi-Fi 接続がない場合、これらの ping はすべてキューに入れられ、Wi-Fi が回復したときにまとめて送信されますか? 誰かが再接続するたびに、何千もの ping でサーバーを攻撃したいかどうかわかりません。

クライアントは Flash で記述されているため、KEEP_ALIVE などのオプションへの低レベル アクセスは多くありません。

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

ruby - Ruby の単純な TCPSocket サーバーで HTTP ヘッダーの問題が発生する

Ruby でいくつかの単純な HTTP サーバー実装 (スレッドなし、スレッド化、ファイバー、イベントマシンなし) のベンチマークを行っていますが、この単純なコードはスレッドを使用すると失敗します。

単純な curl http://localhost:8080/は、配列の最初の要素が "" またはその他の文字列である場合に正常に動作しますが、"HTTP/1.1 200 OK" 応答が直接返されない場合です。どうしてこれなの?