TcpClientおよびNetworkStreamを使用して、認証用のPOPサーバーへの接続を開始しています。悪い習慣、学習に良い。不正な文字列を返すTcpClientを持つStreamReader
私は、POPサーバーにTelnet接続すると、生成された応答が最初である:
+OK Dovecot Ready
ユーザーは、ユーザー名
+OK
ユーザーが有効-N
+OK
をチェックされているパスに入る入り
私のプログラムは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()への呼び出し回数を1つに減らすと、 "+ OK Dovecot Ready"を返します。 POPサーバーに接続していますが、この後は動作しません。誰かがこれを引き起こしている可能性のあるアイディアを持っていますか?
を使用しようとするが、ここで使用されるように正しい用語を「ループ」となっていますか?どのようにループが発生する可能性があるかは、コードからは分かりません。 – spender