Я использую TcpClient и NetworkStream, чтобы инициировать соединение с POP-сервером для аутентификации.Плохая практика, полезная для обучения.
Когда я подключаюсь к серверу POP через Telnet, первоначально получается ответ:
+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, но после этого работать не будет.У кого-нибудь есть идеи, что может быть причиной этого?