問題タブ [tcp]

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 に答える
41696 参照

windows - Windows の同時 tcp/ip 接続の最大数はどれですか?

.NET では、以下の構成を既に正常に試しました。

100 の同時 HttpWebRequest を使用すると、ほぼ同時に (1 秒未満) 応答しました。

一部のフォーラムで、Windows XP と Windows Server 2008 ではこの数が 15 または 20 に制限されていると書いている人がいるのはなぜだろうか。

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

network-programming - localhost を介した送信中、OSI モデルで使用されるレイヤーはどれですか?

localhost アドレスまたは 127.0.0.1 を介してデータを送信する際、OSI モデルで使用されるレイヤーはどれですか?

通信はアプリケーション層を介して始まり、ある層まで下がると思いますが、物理層を通過するデータはありませんか?

0 投票する
6 に答える
22534 参照

profiling - Windows 用のお気に入りの無料の Netstat GUI / 接続モニター アプリは何ですか?

Sysinternals TCPView (私が定期的に使用しています) よりももう少し機能が豊富なものが必要ですが、それもフリーウェアでなければなりません。:)

0 投票する
6 に答える
22776 参照

c++ - 選択したアプリケーションがインターネットにアクセスするのをどのようにブロックしますか (C++、Win32)

あるスケジュールで、特定のアプリケーションを除くすべてのアプリケーションのインターネットへのアクセスを無効にできるアプリケーションまたはサービスを実行したいと考えています。

プログラム制御でオンまたはオフにできるフィルターを作成しようとしています。IP アドレスとポートだけでなく、Zone Alarm やその他のソフトウェア ファイアウォールでブロックできるように、特定のアプリケーションもブロックできるようにしたいと考えています。

たとえば、iexplore.exe、skype.exe、firefox.exe、aim.exe などです。ただし、必要に応じて他のアプリケーションが接続できるようにする必要があります。

XPだけでなくVistaでも動作する必要がありますが、これらのプラットフォームごとに方法が異なると思います.

基本的に、フィルターは、ネットワーク通信を、要求を行っている実行可能ファイルに関連付けてから、許可または拒否する必要があります。

アップデート:

少なくともVista では、 WFP の ALE レイヤーでフィルターを使用したいようです。

XP では、私はまだそれを行うための最良の方法を探しています。デバイスドライバーを書いたり、カーネル関連のものを扱ったりする必要は本当にあるのでしょうか? 私はただのアプリケーション開発者です。今すぐ殺して。

更新 2:

現在、Pre-Vista システム用の PfCreateInterface と関連する Pf* API を検討しています。

0 投票する
8 に答える
122849 参照

c# - TcpClient接続を適切かつ完全に閉じる/リセットする方法は?

TcpClient 接続を閉じたりリセットしたりする正しい方法は何ですか? ハードウェアと通信するソフトウェアがありますが、何か問題が発生し、ソフトウェアを再起動するまで通信できなくなることがあります。

TcpClient.Close() を強制して null に設定しようとしましたが、うまくいきません。ソフトウェアの完全な再起動のみが機能します。

提案?


TpcClient は 1 つの場所でしか定義されておらず、ライブラリ全体で使用されているため、using キーワードは使用できません。(そして、常に 1 つの接続しかありません)

通信を扱うライブラリです。ソフトウェア自体は、Controller クラス (ハードウェアを表す) の ResetConnection() メソッドを呼び出すことができます。

現在のように見えます

ここで読んだことから、「= null」の代わりに tcpClient.Dispose() を使用する必要があります

試してみて、違いがあるかどうかを確認します。

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

windows - 要求されたバッファ サイズが使用可能なデータ量よりも大きい場合、recv が失敗するのはなぜですか?

TCP トランスポート スタックの根底にあるのは、作成者によって時々文書化されている多数のバッファ制限です。WinXP SP3 で、これらのいずれかに遭遇したと思いますが、その理由がわかりません。

サーバーからデータを取得するための単純なクライアントを実装しました (同僚が Java で作成しました)。プロトコルは、データの長さ (ネットワーク順) を 4 バイトで書き込み、次にデータを書き込みます。サーバーは、データを 1024 バイト ブロックで TCP ストリームに書き込みます。クライアントはデータ バッファーの長さを正しく受け取り、メモリを割り当て、ループ内で recv を繰り返し呼び出して、すべてのデータを取得します。

TCP_BlockSize を 4095 以下に設定すると、すべて問題なく、数メガバイトの転送を受信できます。4096 サイズの受信ブロックを試すと、残りのデータに対する最後の要求 (len - currentLen < TCP_BlockSize) は常に失敗し、戻り値 -1 と errno = 0 になります。データが送信され、815054 ~ 834246 バイトの間のどこかですべてが 4096 バイトの受信ブロックでブームになります。

もう 1 つの詳細: サーバーは、最後のバイトを送信した後にソケットを閉じます。なぜ残りのデータが返されないのでしょうか? ストリームが空ではなく閉じられていないときに recv から -1 を受け取るのは曖昧なので、ストリームが空閉じられるまで recv から -1 を返さないのは欠陥のように感じます。

では、最後のデータを取得するにはどうすればよいでしょうか。

0 投票する
3 に答える
2874 参照

linux - Linux で、特定の TCP パケットに対して ACK が受信されたかどうかを知るにはどうすればよいですか?

簡単に言うと、Linux では、特定の TCP パケットに対して ACK メッセージが確実に受信されるようにするにはどうすればよいですか?

全文:

Asterisk/OpenH323 <-> Panasonic IP-GW16 の問題をデバッグしています。

H323 接続には、H225.0 と H245 の 2 つのセッションが含まれます。これらは、いくつかのデータが送信される 2 つの TCP セッションです。

Session 1それらを(H225.0の場合)および(H245の場合)と呼びましょうSession 2

Session 1には既知の TCP ポート番号 1720 があり、Session 2実行時にポートが選択されます。

制御フローは次のようになります。

  1. Panasonic は、Asterisk を呼び出します。これは、(TCP/1720) で Asterisk を開き、パナソニックがリッスンするを含むSession 1を介して SETUP メッセージを送信します。Session 1port 2
  2. アスタリスクは Panasonic に CALL PROCEEDING メッセージを送信します。Session 1
  3. パナソニックがリスニングを開始port 2
  4. Panasonic は で TCP ACK を送信しますSession 1
  5. Session 2アスタリスクは で TCPを開きますport 2

ステップ 2 と 3 の順序が重要ですport 2。Panasonic は、 で CALL PROCEEDING メッセージを受信しない限り、 をリッスンしませんstep 2

しかし、OpenH323 コードでstep 2は、step 5わずか数行しか離れていません。

そのため、接続sometimesはデバッグ モードでquite never機能し、リリースで機能します。

これは、パケット ダンプで明確に確認できます。一連の実験を行ったところ、52 件中 52 件で、step 5前に進むstep 4と接続に失敗しました。そうでない場合、接続は成功します。

の ACK を除いて、Panasonic から送信された他のメッセージはありませんstep 4。Asterisk が聞いていることを知る唯一の方法port 2は、その ACK を受信することです。

もちろん、時限待機を実装することもできますが、よりクリーンなソリューションが必要です。

もう一度質問します。 で TCP 接続を介してメッセージを送信した後、メッセージをstep 2含むパケットに対して ACK が受信されたかどうかをどのように知ることができますか?

0 投票する
3 に答える
8509 参照

eclipse - tcp/ipモニター

Eclipseでは、weblogicサーバーを実行していて、j2eeアプリケーションをデプロイしています。アプリケーションはポート7001でサービスを提供しています。モニターをアプリケーションに接続したいのですが、使用するポートがわかりません。ホスト名(localhost:7001)に何を入力すればよいかはわかっていると思いますが、タイプとローカルポートに何を使用すればよいかわかりません。手続きでは、ローカルポートの意味は何ですか。アプリケーションの実行前または実行後にモニターを起動するかどうかは重要ですか?私の目標は、ログイン時にローカルマシンからブラウザを介してトラフィックを監視し、アプリケーションの他の部分にアクセスすることです。助けてくれてありがとう

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

c - 私の単純なpoll()の例は部分的にしか機能しません

poll()このプログラムは、ポート8888でTelnet接続を受け入れ、send()を使用して各Telnetクライアントからメッセージを送信するrecv()ことになっていますが、100%は機能しません。特定の接続は常に誰にでもメッセージを送信でき、プログラムは正常に機能しているようですが、メッセージを送信できないクライアントが少なくとも1人は常に存在します。すべてのクライアントは常に受信できます(pollは受信データを登録しません)。

このコードはそれ自体で実行されるため、ファイルに入れてコンパイルするとgcc -o app filename.c、ポート8888でローカルホストにtelnetで接続し、機能しないことを確認できます。このコードはFedora用に書かれていますが、Linux固有以外のものを含めるべきではありません。どんな助けでも本当にありがたいです。

0 投票する
3 に答える
3810 参照

python - Python/Twisted - TCP パケットの断片化?

Twisted で dataReceived メソッドを実装する場合、パケットが断片化されていることを示す例はないようです。他のすべての言語では、これは手動で実装するものなので、twisted でこれが既に行われているのか、それとも何なのか疑問に思っていました。その場合、パケットに長さヘッダーのプレフィックスを付ける必要がありますか? または、これを手動で行う必要がありますか? もしそうなら、それはどのような方法でしょうか?