問題タブ [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.
windows - Windows の同時 tcp/ip 接続の最大数はどれですか?
.NET では、以下の構成を既に正常に試しました。
100 の同時 HttpWebRequest を使用すると、ほぼ同時に (1 秒未満) 応答しました。
一部のフォーラムで、Windows XP と Windows Server 2008 ではこの数が 15 または 20 に制限されていると書いている人がいるのはなぜだろうか。
network-programming - localhost を介した送信中、OSI モデルで使用されるレイヤーはどれですか?
localhost アドレスまたは 127.0.0.1 を介してデータを送信する際、OSI モデルで使用されるレイヤーはどれですか?
通信はアプリケーション層を介して始まり、ある層まで下がると思いますが、物理層を通過するデータはありませんか?
profiling - Windows 用のお気に入りの無料の Netstat GUI / 接続モニター アプリは何ですか?
Sysinternals TCPView (私が定期的に使用しています) よりももう少し機能が豊富なものが必要ですが、それもフリーウェアでなければなりません。:)
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 を検討しています。
c# - TcpClient接続を適切かつ完全に閉じる/リセットする方法は?
TcpClient 接続を閉じたりリセットしたりする正しい方法は何ですか? ハードウェアと通信するソフトウェアがありますが、何か問題が発生し、ソフトウェアを再起動するまで通信できなくなることがあります。
TcpClient.Close() を強制して null に設定しようとしましたが、うまくいきません。ソフトウェアの完全な再起動のみが機能します。
提案?
TpcClient は 1 つの場所でしか定義されておらず、ライブラリ全体で使用されているため、using キーワードは使用できません。(そして、常に 1 つの接続しかありません)
通信を扱うライブラリです。ソフトウェア自体は、Controller クラス (ハードウェアを表す) の ResetConnection() メソッドを呼び出すことができます。
現在のように見えます
ここで読んだことから、「= null」の代わりに tcpClient.Dispose() を使用する必要があります
試してみて、違いがあるかどうかを確認します。
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 を返さないのは欠陥のように感じます。
では、最後のデータを取得するにはどうすればよいでしょうか。
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
実行時にポートが選択されます。
制御フローは次のようになります。
- Panasonic は、Asterisk を呼び出します。これは、(TCP/1720) で Asterisk を開き、パナソニックがリッスンするを含む
Session 1
を介して SETUP メッセージを送信します。Session 1
port 2
- アスタリスクは Panasonic に CALL PROCEEDING メッセージを送信します。
Session 1
- パナソニックがリスニングを開始
port 2
- Panasonic は で TCP ACK を送信します
Session 1
。 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 が受信されたかどうかをどのように知ることができますか?
eclipse - tcp/ipモニター
Eclipseでは、weblogicサーバーを実行していて、j2eeアプリケーションをデプロイしています。アプリケーションはポート7001でサービスを提供しています。モニターをアプリケーションに接続したいのですが、使用するポートがわかりません。ホスト名(localhost:7001)に何を入力すればよいかはわかっていると思いますが、タイプとローカルポートに何を使用すればよいかわかりません。手続きでは、ローカルポートの意味は何ですか。アプリケーションの実行前または実行後にモニターを起動するかどうかは重要ですか?私の目標は、ログイン時にローカルマシンからブラウザを介してトラフィックを監視し、アプリケーションの他の部分にアクセスすることです。助けてくれてありがとう
c - 私の単純なpoll()の例は部分的にしか機能しません
poll()
このプログラムは、ポート8888でTelnet接続を受け入れ、send()
を使用して各Telnetクライアントからメッセージを送信するrecv()
ことになっていますが、100%は機能しません。特定の接続は常に誰にでもメッセージを送信でき、プログラムは正常に機能しているようですが、メッセージを送信できないクライアントが少なくとも1人は常に存在します。すべてのクライアントは常に受信できます(pollは受信データを登録しません)。
このコードはそれ自体で実行されるため、ファイルに入れてコンパイルするとgcc -o app filename.c
、ポート8888でローカルホストにtelnetで接続し、機能しないことを確認できます。このコードはFedora用に書かれていますが、Linux固有以外のものを含めるべきではありません。どんな助けでも本当にありがたいです。
python - Python/Twisted - TCP パケットの断片化?
Twisted で dataReceived メソッドを実装する場合、パケットが断片化されていることを示す例はないようです。他のすべての言語では、これは手動で実装するものなので、twisted でこれが既に行われているのか、それとも何なのか疑問に思っていました。その場合、パケットに長さヘッダーのプレフィックスを付ける必要がありますか? または、これを手動で行う必要がありますか? もしそうなら、それはどのような方法でしょうか?