Я разрабатываю небольшое приложение терминала, которое обрабатывает взаимодействия с сервером POP3. Тем не менее, у меня проблема, когда read() и readLine() из блока BufferedReader. Мои первоначальные попытки использовали readLine(), но после чтения на SO и других сайтах я понял, что сервер не возвращает соответствующие символы, чтобы отметить конец строки, поэтому я попытался использовать read(). Но по какой-то причине это блокирует также.BufferedReader read() и readLine() оба висят, пытаясь получить ответ с сервера POP3
Socket s = new Socket(InetAddress.getByName(this.HOST), 110);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(), true);
String res = in.readLine(); // This works fine
System.out.println(res);
res = "";
char [] charRes = new char[1024];
out.println("USER " + this.username);
// res = in.readLine();
in.read(charRes); // Does not work
res = charRes.toString();
System.out.println(res);
Проблема не с сервером, потому что я тестировал его с помощью Telnet и она отлично работает. Я не уверен, что я делаю неправильно, и я был бы признателен за любую помощь.
Мое клиентское программное обеспечение работает в системе Linux, и я подключаюсь к серверу Windows.
Почему вы не используете JavaMail? – EJP
Это практическое задание для класса сетей. Я не могу использовать ничего, кроме сокетов. – user3493992