2

少し調べてみたところ、TCP ソケットを介して着信 XML データを適切にフレーム化する方法についての質問に対する答えは、事前にサイズを示すヘッダーを付けて XML を送信するか、区切りのエスケープ シーケンスを使用することでした。私は基本的に非常に古い C サーバー用のクライアントを書いているので、その結果、いじる必要のない多くの他のクライアントと通信するので、後者を選びました。以前は、その目的が何であるかを知らなかったので、ストリームから '\n' を実際に取り除いていました。ここで、非同期の OnDataReceived メソッドが呼び出されると、区切り文字を含む適切なデータ チャンクが取得されます。ストリームから取得され、文字列変数に格納されたサンプルを次に示します。

<?xml version=\"1.0\"?><message><type>SERVER</type><user>TestDeleteOrKillMe</user>                   <cmd>PRIVATE_MSG</cmd><host>65.255.81.81</host><msg>4111|3.16C (UNIX)|</msg></message>\n<?xml version=\"1.0\"?><message><type>SERVER</type><user>TestDeleteOrKillMe</user>    <cmd>PRIVATE_MSG</cmd><host>65.255.81.81</host><msg>4362|copyright 1993 by James D. Bennett|</msg></message>\n

私の質問は、個々の XML「ステートメント」から文字列値を引き出す手順は何ですか? これらを ParseMessage(string) メソッドに送信して処理を開始できるようにするには? 最初は、最初の \n が見つかるまで最初から開始してから、前のテキストをすべて選択して削除する正規表現を考えていましたか? おそらく過度に複雑なアプローチを開始する前に、この問題の一般的な(または一般的ではない)慣行についての意見を聞きたいと思います。どうもありがとう。

4

0 に答える 0