質問

ソフトウェアのメンテナンスを行っていますが、理解できない問題があります。

アプリケーションは、Microsoft Visual C ++ 6を使用して開発され、Windows XP上で実行されます。 UDPソケットを介して互いに通信する21のアプリケーションで構成されています。これは、PC環境でシステムをデバッグするために使用される組み込みアビオニクスシステムのシミュレーションです。各アプリケーションは組み込みシステムのノードをシミュレートし、組み込みネットワークはUDPを介してシミュレートされます。システムはもともと複数のPCで実行されていましたが、現在は単一のクアッドコアマシンで実行できます。

システムは動作していますが、通信が非常に遅くなっています。ただし、Internet Explorerを開いて1つまたは2つのWebサイトにアクセスすると、アプリケーションが突然非常に高速に通信するようになります。

私の質問は、アプリケーションが設定できるように、Internet ExplorerがWebサイトにアクセスするときに何を設定したかということです。システムの元の作者はまだいないため、Windowsプログラミングの経験はほとんどありません。

役に立ちましたか?

解決

結局のところWindowsの問題ではないかもしれません

  1. APIをチェックし、バッファをチェックし、INVALID(-1)を引き起こさないエラーメッセージ 'getlasterror()'をチェックし、プログラムが完全に実行されたとしてもプログラムを停止します。

  2. ネットワーク接続を介して大量のデータを転送する際の一般的な問題であるACKまたは攻撃速度を確認します(<!> lt;-90%それはあなたの問題です)。 microsoft.com/kb/823764)

  3. これらのソリューションのどちらも機能しない場合は、manfucturer Webサイトに対してドライバーのバージョンを確認してください。

  4. 最後の手段は次の便利なアイデアです。 。このプログラムwww.lvllord.deを使用して、最大ハーフ/オープン接続を8から50に増やします 。サーバーエディションのウィンドウを使用すると、インターネットベースのプログラムを強化できます。 。ソケットAPIでマルチスレッドを使用すると、マルチスレッドアプリケーションの異なるスレッドで2つ以上のソケットを使用している場合、APIを混乱させる可能性があります。非同期ソケットなどを使用してパフォーマンスを最適化してみてください(msdn.microsoft.com/en- us / library / ms738551(VS.85).aspx)

  

私の質問は、アプリケーションが設定できるように、Internet ExplorerがWebサイトにアクセスするときに何を設定したかということです。システムの元の作者はまだいないため、Windowsプログラミングの経験はほとんどありません。

WikiでACKを確認することもできます。他の方法で攻撃速度を意味します。そうでない場合は、受信ウィンドウサイズになります
両方の設定はユーザーには見えません..チューンナップユーティリティや一般的なネットワークの隠し設定アジャスターなどのプログラムを介して設定できます
それは単にトリックを行うかもしれない..

他のヒント

UDPを超えるプロトコルが信頼性を実装している場合、速度の低下は、localhostでの大量のUDPパケットの損失によるものです。 localhostでのUDPのパフォーマンスはひどいです。最善の策は、ソケットAPIをTCPレイヤー内にラップすることです。

UDPブロードキャストまたはマルチキャストの場合、TCPでメッセージを多重化するブローカープロセスの実装を検討する必要があります。

ZeroMQ など、プロセス間レベルで適切に機能する既存のメッセージングAPIを簡単に確認できます。

Wiresharkを使用して、Internet Explorerの動作を確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top