我正在使用TcpClient和NetworkStream來啓動到POP服務器的連接以進行身份驗證。糟糕的做法,有利於學習。帶有TcpClient的StreamReader返回不正確的字符串
當我遠程登錄到POP服務器,所產生的響應是最初:
+OK Dovecot Ready
用戶輸入的用戶名
+OK
用戶輸入被檢查通 +OK
如果有效-N
如果不是
我的程序正在連接到POP服務器,打開StreamReader和Writer,寫入所有的數據並檢查響應。
using (TcpClient client = new TcpClient("host.university.ie", 110)) {
using (NetworkStream stream = client.GetStream()) {
using (StreamReader reader = new StreamReader(stream)) {
using (StreamWriter writer = new StreamWriter(stream)) {
string response = reader.ReadLine();
writer.Write("USER " + username);
response = reader.ReadLine();
writer.Write("PASS " + password);
string response = reader.ReadLine();
Response.Write(@"<script language='javascript'>alert('The following response as been received: \n" + response + " .');</script>");
isValid = response[ 0 ].Equals('+');
writer.WriteLine("quit\n");
}
}
}
}
}
但是,當我輸入此代碼時,查詢進入無限循環。令人困惑的是,當我將reader.ReadLine()調用減少到一個時,它返回「+ OK Dovecot Ready」!所以它連接到POP服務器,但在此之後它將不起作用。有沒有人有任何想法可能造成這種情況?
是「循環」正確的術語在這裏使用?從代碼中不清楚如何循環可能發生。 – spender 2012-02-20 11:43:13