我正在使用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