MFCベースのアプリケーションは、XMLベースのメッセージを別のシステムと送受信する必要があります。クライアント側の通信は、MSXML2 :: IXMLHTTPRequestPtrクラスを使用して行われます。これは、次のコードを記述することができます: MFCフレームワークでXML over HTTPを使用した双方向通信を実現する方法
MSXML2::IXMLHTTPRequestPtr pHttpRequest; // The HTTP Request object
XmlDocument pXMLRequest; // The XML document contain
HRESULT hResult;
hResult = pHttpRequest.CreateInstance("Msxml2.ServerXMLHTTP.3.0");
if (FAILED(hResult)) throw Error (hResult);
pHttpRequest->open("POST", bURL,true);
pHttpRequest->send(pXMLRequest->xml); // Send the XML request
while (pHttpRequest->GetreadyState() != 4) // Just wait for the answer
{ // (automatically on a
pHttpRequest->waitForResponse(10); // separate thread so it
} // does not block)
m_lHttpStatus = pHttpRequest->status; //Read response and status
_bstr_t bsResponse = pHttpRequest->responseText; //responsetext contains the XML
かなり簡単に、かつ正常に動作します。 しかし、反対側のシステムは同じことをする必要がありますので、私のプログラムはサーバーとして動作する必要があります。そして、MSXMLには「XMLServer」オブジェクトが存在しないようです。
これで、ローソケットプログラミングに落ちることができました。リスニングソケットを作成し、データを受け取るとメッセージ内のXMLを解析します。しかし、それはHttpRequestオブジェクトの使い易さと比べて、非常に効率的ではないようです。
実際には、データを送信せずにレスポンスを無期限に待たせるよりも、HttpRequestを開始したいと思います。したがって、「応答」よりも実際には他のシステムからの要求になります。しかし、waitForResponse()はsend()の後でのみ動作します。 send()は常にHttp Requestメッセージを送信します。
したがって、1つのMFCプログラムでクライアントとサーバーの動作を実装する最良の方法は何ですか?
私はASPまたはASP.NETでこれを行うことができますが、私はMFCフレームワークに固執しています。これは残りのソフトウェアが作成されているためです。また、XMLベースのプロトコルも修正されています。オプションではありません.MFCでクライアント/サーバー構造を取得する最も簡単で簡単な方法を探しています。ボトムラインの回答:両方のプログラムは、相手のURLが手動で入力されるため、接続先を認識します。また、両方ともpingサービスを提供します。これは、基本的に、pingサービスに向けられたHTTPリクエストを受け取った場合、単にリクエストの内容をエコーします。 –
HTTPサーバーを実装する必要があります。難しいことではありません。すべてを空白行まで読み上げるだけです。 POSTの場合は、Content-Lengthヘッダーを読み取り、その本文のためにその多くの余分なバイトを読み取ります。 http://www.microsoft.com/msj/archive/S25F.aspx http://developers.sun.com/mobility/midp/ttips/HTTPPost/ – Ben
リンクをありがとう。これは私が今行ってきたルートです。しかし、私はまだ誰かが私のために働くMSXMLオブジェクトを作るためのトリックを知っていることを願っています... –