Я пытаюсь написать простой почтовый клиент на Java с сокетами.Но я думаю, что это лучший способ обработать ответ от сервера?Предположим, у меня есть простой код, подобный приведенному ниже:
smtpSock = new Socket(mailHost, SMTP_PORT);
inn = smtpSock.getInputStream();
outt = smtpSock.getOutputStream();
in = new BufferedReader(new InputStreamReader(inn));
out = new PrintWriter(new OutputStreamWriter(outt), true);
out.println("AUTH LOGIN " + user.getID());
String response = in.readLine();
//manipulate the response string to check if user ID exists on server
//if ID exists, proceed to password. Else, quit.
out.println("PASS " + user.getPassword());
response = in.readLine();
//manipulate the response string to check if auth success or not
После того, как я выполнил команду AUTH LOGIN
и в качестве параметра указал идентификатор пользователя, сервер, скорее всего, даст ответ.Я могу получить ответ на строку.Теперь, чтобы понять ответ и знать, что делать дальше, я думаю, что я бы манипулировал строкой путем ее токенизации, а затем читал первые 3 символа один за другим, чтобы интерпретировать номер кода ответа.Это может звучать нормально, поскольку код ответа составляет всего 3 символа.
Но что произойдет, если, скажем, сокет теперь подключается к POP3 и получает почту.Ответ будет довольно огромным.Есть ли хороший и не слишком сложный способ интерпретировать ответ и затем поместить его в структуру данных?Если синтаксический анализ строки - единственный способ, не слишком ли наивна моя идея маркировать огромный набор данных String в соответствии с их «текстовыми шаблонами»?Есть ли более эффективный и быстрый способ сделать это?