問題タブ [network-programming]
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.
tcp - キャプチャされたセッションで使用されるTCP輻輳制御アルゴリズムをフィンガープリントするためのアルゴリズムはありますか?
キャプチャされたTCPセッションで使用されるTCP輻輳制御アルゴリズムを決定するためのプログラムが欲しいのですが。
参照されているウィキペディアの記事には次のように記載されています。
TCP New Renoは最も一般的に実装されているアルゴリズムであり、SACKサポートは非常に一般的であり、Reno /NewRenoの拡張機能です。他のほとんどは、まだ評価が必要な競合する提案です。2.6.8以降、Linuxカーネルはデフォルトの実装をrenoからBICに切り替えました。2.6.19バージョンでは、デフォルトの実装が再びCUBICに変更されました。
また:
複合TCPは、公平性を損なうことなくLFNで良好なパフォーマンスを達成することを目的として、2つの異なる輻輳ウィンドウを同時に維持するTCPのMicrosoft実装です。これは、MicrosoftWindowsVistaおよびWindowsServer2008で広く展開されており、Linuxだけでなく古いMicrosoftWindowsバージョンにも移植されています。
どのCCアルゴリズムが使用されているかを判断するためのいくつかの戦略は何でしょうか(セッションをキャプチャするサードパーティから)?
アップデート
このプロジェクトは、これを行うためのツールを構築しました。
インターネットは最近、同種の輻輳制御から異種の輻輳制御へと進化しています。数年前、インターネットトラフィックは主に標準のTCP AIMDアルゴリズムによって制御されていましたが、インターネットトラフィックは現在、AIMD、BIC、CUBIC、CTCP、HSTCP、HTCP、HYBLA、ILLINOIS、LPなどのさまざまなTCP輻輳制御アルゴリズムによって制御されています。 STCP、VEGAS、VENO、WESTWOOD +、およびYEAH。ただし、異種輻輳制御を使用したインターネットのパフォーマンスと安定性の調査に関する作業はほとんどありません。基本的な理由の1つは、さまざまなTCPアルゴリズムの展開情報が不足していることです。このプロジェクトの目標は次のとおりです。
java-me - j2me でバックグラウンド プロセスとしてデータをアップロードすることは可能ですか?
ネットワーク接続が悪い場合でも?
具体的には、HTTP POST 経由でファイルをアップロードしようとする別のスレッドを (UI から) 起動するコードを作成しました。ただし、接続が悪い場合、プロセッサは outputstream.close() または httpconnection.getheaderfield() またはネットワーク経由でデータを強制する読み取り/書き込みでスタックすることがわかりました。これにより、スレッドがスタックするだけでなく、プロセッサ全体が盗まれるため、ユーザー インターフェイスでさえ応答しなくなります。
スレッドの優先順位を下げようとしましたが、役に立ちませんでした。
私の理論では、この動作を回避する簡単な方法はありません。そのため、すべての j2me チュートリアルでは、すべてをバックグラウンド スレッドで送信するのではなく、「ネットワーク経由でデータを送信しています...」画面を作成するように開発者に指示しています。誰かが私が間違っていることを証明できれば、それは素晴らしいことです.
ありがとう!
actionscript-3 - プロトコルの単純さと「適切さ」
私は友人と別の口論をしています。
当事者間である種のイベント (メッセージ) を送信するために基本的に使用される単純な JSON ベースのプロトコルを設計する必要があると考えてください。
言って、何か
私はこのプロトコルを上記のように維持することを提案しますが、私の友人は次のようなことを提案しています:
彼の主張は、TCP と HTTP が「責任」の異なる層にあるように、このプロトコルはデータを分離しておくために「詳細」サブオブジェクトを使用する必要があるというものです。
彼が持っているもう 1 つの議論は、一致したイベントを処理するハンドラーは、"ルーティング" 情報 (event_id など) について何も認識してはならないというものです。
私の主張は次のとおりです。
- この情報をハンドラーから隠すために、各メッセージ (およびネットワーク トラフィック。これは、大量のメッセージを交換するシステムにとって重要な場合があります) の長さを増やしています。
ハンドラーは、適切に応答するために、実際には「ルーティング」情報を知る必要があります。
/li>event_id などをハンドラーから隠す必要がある場合でも、ハンドラーに渡す前にそれらを取り除くだけで、トラフィックを節約できます。
このプロトコルは非常に単純で、他の人が使用することは想定されていません。
どう思いますか?
c++ - C++ (UDP または TCP) のネットワーク フレームワーク?
私はSDLとOpenGLを使用してスレッド化されたクロスプラットフォーム アプリケーション (Linux/Windows) を作成しており、ネットワーキングを行うために、SDL_Net の上にあるSDL Net2 を検討していました。
ただし、これまで C/C++ でネットワークを作成したことがないため、利用可能なクロスプラットフォーム テクノロジに慣れていません。別のライブラリを提案するSDL_NetまたはNet2の経験がある人はいますか?
iphone - CFReadStreamHasBytesAvailableポーリング-ベストプラクティス
CFReadStream
現在、を使用して新しいデータをポーリングしていCFReadStreamHasBytesAvailable
ます。
(最初に、いくつかの背景:私は独自のスレッド化を行っており、runloopのものを台無しにする必要はないので、クライアントコールバックのものは実際にはここでは適用されません)。
私の質問は:ポーリングのために受け入れられている慣行は何ですか?
この件に関するAppleのドキュメントはあまり役に立たないようです。
彼らは「あなたが待っている間に何か他のことをする」ことを勧めます。私は現在、次のようなことをしています。
usleep
とはsched_yield
「十分」ですか?そこに眠るのに「良い」数がありusleep
ますか?
(また:はい、これは私自身のスレッドで実行されているので、ブロックすることができますCFReadStreamRead
-これは素晴らしいことですが、アップロードの進行状況とダウンロードの進行状況を妨害しようとしているので、そこでブロックしても役に立ちません... )。
どんな洞察も大歓迎です-ありがとう!
c# - ソケット通信プログラムのテスト
いくつかのデータを送信するための単純なUDPClientプログラムを使用したソケットプログラミングから始めています。大きなコードスニペットは以下のとおりです。
サンプルはローカルマシンでは正常に機能しますが、イントラネット上の別のマシンにデータを送信することはできません。
テスト中
- 彼のマシンにデータを送信するための適切なコードのコメントを解除しています
- 彼のマシンでReceiverビットを実行しています
- 必要なポートが彼のマシンで開いていることを確認しました
私は何かが足りないのですか?提案してください。
network-programming - アプリケーションのプロトコルをリバース エンジニアリングするにはどうすればよいですか?
あまり普及していないアプリ(インスタントメッセンジャー)を使っています。使用するプロトコルを見つけようとしています。TCP/IP を使用していることはわかっていますが、サーバーに送信し、サーバーから受信しているすべてのコマンドを調べたいと考えています。
いくつかのスニファーを試しましたが、彼らはこのアプリケーションを名前で認識できず、さらに、関連のない 16 進コードがいくつか得られました。
アプリケーションの仕様を見つける方法はありますか?
(注:私はそれをグーグルで検索しましたが、何も見つかりませんでした。また、著者によるドキュメントもありません。)
c++ - IP_HDRINCL に問題がありますか?
生の IP パケットの実装については、既にこの質問をしました。しかし、私は何の解決策も得られませんでした。
私のコード:
エラー:
WSAGetLastError() は 10022 を返します。
説明:
setsockopt (Wsapiref_94aa.asp) 関数に無効な引数 (無効なレベルを指定した引数など) が指定されました。場合によっては、ソケットの現在の状態を参照することもあります。たとえば、リッスンしていないソケットで accept (Wsapiref_13aq.asp) を呼び出します。
解説:
しかし、正しいオプション値とサイズを設定しました。
私は何を間違っていますか?Windows XP (SP3) を使用しています。setsocketopt で、そのプログラムに対して IP_OPTIONS を試してみましたが、正常に動作し、IP パケットも送信します。しかし、すべての IP パケットのエーテルでは、宛先から ICMP パケットが生成されます。
どうすればこれを修正できますか?
ソースコード:
// raw tcp パケット クラフター
network-programming - マルチプレイヤー/オンライン ゲーム プログラミングで最も見られる初心者の間違いは?
あなたが見た初心者の間違いとその治療法は何ですか?
何度も発生するのは、クライアントがサーバーに対してまったくチェックされていないことです。
例えば:
- ユーザーは、フラッシュ ゲームのソースを逆コンパイルするか、ネットワーク トラフィックをリッスンして、ハイ スコア データの行き先を確認し、ゲームをプレイしていなくても偽のハイ スコアをそこに送信します。
- ユーザーはトレーナーを使用し、現在のレベルには表示されない可能性があるアイテムを取得します。これは「クライアント X がアイテム Y を取得しました」のようにサーバーに送信され、サーバーはそれを受け入れるだけです。
もちろん、簡単な解決策は、サーバーへの API としてのみゲーム クライアントを処理することです。その後、ユーザーはトレーナーやその他のメモリ操作を好きなだけ使用できますが、サーバーはそれができないと言います。サーバーは、ゲームのルールを基にクエリを実行できるデータベースと考えてください。
例えば
- クライアント:ゲーム開始
- クライアント: サーバーに接続します
- クライアント: サーバーから利用可能な金額を照会します
- ユーザー:お金を無限に設定するトレーナーを有効にします
- クライアント: server.buyItem('非常に高価')
- サーバー: ゲームの状態を確認します (ユーザーは今すぐアイテムを購入できます)。player[0].money をチェック -> ボーナスなし。
- クライアント: server.buyItem('can get this')
- サーバー: ゲームの状態を確認します (ユーザーは今すぐアイテムを購入できます)。player[0].money をチェックします。player[0].items.add('can get this') これにより、player[0].money からのコストが削減されます。次に、クライアントに通知します send(player[0], 'items', 'can get this'); send(プレーヤー[0]、「お金」、プレーヤー[0].お金)。
もう 1 つの方法は、クライアントの動きを記録し、それをサーバーが再生するハイスコア サーバーに送信することです。もちろん、これはその記録が非常に大きいことにつながる可能性があります。
java - Android (Java) ネットワーク プログラミング リソース
TCP 接続を介してデータを転送する Android 用のアプリケーションを開発したいと考えています。
クライアントサーバー接続の例が見つかる良い例や本を知っている人はいますか?
私は Java と Android にまったく慣れていないので、何か提案があればとても感謝しています。