Исключение: Read timed out сокет
Имеется простой POP3 клиент на Java. По задумке должен уметь просто посылать базовые запросы на сервер pop.gmail.com или pop.mail.ru. Однако по какой-то причине не могу получить даже приветственное сообщение, хотя соединения(судя по дебаггингу) устанавливается. Порты вроде бы открыл, даже на роутере пробросил на всякий случай, ничего не помогает. Пробовал как 995, так и 110(при 110 даже не устанавливается соединение). В чем может быть дело? Привожу ниже небольшой код:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class Pop3Client {
public static void main(String[] args) throws Exception {
// Указываем параметры подключения
String host = "pop.gmail.com";
int port = 995;
String username = "*****@gmail.com";
String password = "*********";
// Устанавливаем соединение
Socket socket = new Socket(host, port);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
OutputStreamWriter writer = new OutputStreamWriter(socket.getOutputStream());
String response = reader.readLine();
System.out.println(response);
// Отправляем команду USER
String command = "USER " + username + "\r\n";
writer.write(command);
writer.flush();
response = reader.readLine();
System.out.println(response);
// Отправляем команду PASS
command = "PASS " + password + "\r\n";
writer.write(command);
writer.flush();
response = reader.readLine();
System.out.println(response);
// Отправляем команду STAT
command = "STAT\r\n";
writer.write(command);
writer.flush();
response = reader.readLine();
System.out.println(response);
// Получаем количество сообщений в почтовом ящике
String[] responseParts = response.split(" ");
int messageCount = Integer.parseInt(responseParts[1]);
// Получаем текст сообщений
for (int i = 1; i <= messageCount; i++) {
// Отправляем команду RETR
command = "RETR " + i + "\r\n";
writer.write(command);
writer.flush();
response = reader.readLine();
System.out.println(response);
while (!response.startsWith(".")) {
response = reader.readLine();
System.out.println(response);
}
}
// Отправляем команду QUIT
command = "QUIT\r\n";
writer.write(command);
writer.flush();
response = reader.readLine();
System.out.println(response);
// Закрываем соединение
socket.close();
}
}