這個方法接收一個滿足協議格式要求的輸入字符串,然後返回一個數組,這是因為如果出現多次請求 合並成一個發送過來的情況,那麼就將它們全部返回。隨後簡單起見,我在這個類中添加了一個靜態的 Test()方法和PrintOutput()幫助方法,進行了一個簡單的測試,注意我直接輸入了length=13,這個是我 提前計算好的。
public static void Test() {
RequestHandler handler = new RequestHandler();
string input;
// 第一種情況測試 - 一條消息完整發送
input = "[length=13]明天中秋,祝大家節日快樂!";
handler.PrintOutput(input);
// 第二種情況測試 - 兩條完整消息一次發送
input = "明天中秋,祝大家節日快樂!";
input = String.Format
("[length=13]{0}[length=13]{0}", input);
handler.PrintOutput(input);
// 第三種情況測試A - 兩條消息不完整發送
input = "[length=13]明天中秋,祝大家節日快樂![length=13]明天中秋";
handler.PrintOutput(input);
input = ",祝大家節日快樂!";
handler.PrintOutput(input);
// 第三種情況測試B - 兩條消息不完整發送
input = "[length=13]明天中秋,祝大家";
handler.PrintOutput(input);
input = "節日快樂![length=13]明天中秋,祝大家節日快樂!";
handler.PrintOutput(input);
// 第四種情況測試 - 元數據不完整
input = "[leng";
handler.PrintOutput(input); // 不會有輸出
input = "th=13]明天中秋,祝大家節日快樂!";
handler.PrintOutput(input);
}
// 用於測試輸出
private void PrintOutput(string input) {
Console.WriteLine(input);
string[] outputArray = GetActualString(input);
foreach (string output in outputArray) {
Console.WriteLine(output);
}
Console.WriteLine();
}
運行上面的程序,可以得到如下的輸出:
OK,從上面的輸出可以看到,這個方法能夠滿足我們的要求。對於這篇文章最開始提出的問題,可以 很輕松地通過加入這個方法來解決,這裡就不再演示了,但在本文所附帶的源代碼含有修改過的程序。在 這裡花費了很長的時間,接下來讓我們回到正題,看下如何使用異步方式完成上一篇中的程序吧。