4

従来の MFC アプリケーションを編集していて、いくつかの基本的なネットワーク機能を追加する必要があります。操作する側は簡単な指示(番号1、2、3、4...)を受け取り、それに基づいて何かをしなければなりません。クライアントはレイテンシーをできるだけ速くしたいので、当然、データグラム (UDP) を使用することにしました。

しかし、あらゆる種類のリソースを読んで、私は夢中になりました。MFC でUDP ソケット ( ) をリッスンできませんCAsyncSocket。ブロックして待機する Receive を呼び出すことしかできません。UI をブロックするのは賢明ではありません。したがって、スレッド化手法を使用できると思いますが、MFC の経験があまりないので、どのように実装する必要がありますか?

問題の他の部分は、信頼性と実装の問題を考慮して、これを行うべきか、TCP に戻すべきかということです。UDP が信頼できないことはわかっていますが、実際にはどれくらい信頼できないのでしょうか? 私はそれが最大 50% 高速であることを読みました。これは私にとっては大変なことです。

私が使用した参照: http://msdn.microsoft.com/en-us/library/09dd1ycd(v=vs.80).aspx

4

3 に答える 3

2

TCP の「レイテンシ」の大部分は、最初の接続をセットアップするために必要なハンドシェイクです。

クライアント アプリが MFC アプリから多くのコマンドを要求する場合、TCP は非常に簡単です。クライアントは TCP 接続を開き、開いたままにします。

MFC アプリがさまざまなクライアントから多数のアドホック コマンドを受信する場合は、UDP が適切かもしれませんが、TCP ハンドシェイクのわずかなコストを節約することが、コマンドがまったく発生しない可能性よりも価値があるかどうかを検討する必要があります。すべてUDPがそれを捨てるためです。

于 2012-10-20T09:58:45.373 に答える
0

みんなありがとう。以上のことから、UDP を試してみることにしました。実装に関する質問については、私自身が非常に役立つ回答を見つけました。これにより、コミュニケーションが整うようです。将来読んだり、同じことを尋ねたりする人のために、2 つの単純な CAsyncSocket ラッパー クラス:

http://www.codeproject.com/Articles/16581/Sending-Receiving-UDP-Datagrams-with-MFC-s-CAsyncS

于 2012-10-20T23:58:57.537 に答える