В java есть еще один объект, например BufferedReader для чтения данных, полученных сервером? Поскольку сервер отправляет строку без новой строки, а клиент не печатает какую-либо строку, она не закрывает сервер, закрывая форму соединения. Тайм-аут (сообщение с тайм-аутом имеет новую строку!), После того, как клиент распечатает все полученные сообщения и отправит сообщение таймаута сервером ! помогите мне спасибо!BufferedReader, другой объект, чтобы получить строку
ответ
Когда вы читаете что-либо с сервера, вы должны строго следовать протоколу связи. Например, сервер может быть HTTP-сервером или SMTP-сервером, он может шифровать данные перед их отправкой, некоторые данные могут быть закодированы по-разному и так далее.
Итак, вы должны в основном спросить: на каком сервере я хочу получить доступ? Как он отправляет мне байты? И кто-то еще уже проделал работу по интерпретации байтов, чтобы я мог быстро добраться до данных, которые я действительно хочу?
Если это HTTP-сервер, вы можете использовать код new URL("http://example.org/").openStream()
. Затем вы получите поток байтов. Как вы конвертируете эти байты в символы, строки и другие вещи, это еще одна задача.
Просто не читайте строки новой строки, используя метод readLine()
, но читайте char-by-char, используя метод read()
.
for (int c = 0; (c = reader.read()) > -1;) {
System.out.print((char) c);
}
Вы просили другого класса, чтобы использовать, так что в этом случае дать Scanner попробовать для этого. Он обычно используется для разграничения ввода на основе шаблонов или типов, выводимых из ввода (например, чтение по байтовым байт-базам или по принципу int-by-int или их комбинация). Тем не менее, вы можете использовать его как просто универсальный «читатель» здесь, чтобы охватить ваш вариант использования.
Вы можете попробовать
InputStream is = ... // from input
String text = IOUtils.toString(is);
превращает ввод в текст, не без переноса строк (он сохраняет оригинальные переводы строк, а)
Вот Java API делают: http://java.sun.com/ javase/6/docs/api/- узнайте, как его использовать. –
Майкл, это не слишком полезно. Приближение к целой библиотеке или структуре классов может быть довольно сложным. И если все, что вы когда-либо делали, было небольшим текстовым файлом или консольным вводом-выводом (не необоснованным для начинающих задач программирования), то BufferedReader действительно может быть единственным, что они знают (и, эй, у него есть метод readLine(), который определенно удобен). – Joey
Joey: в то время как комментарий Майкла был, пожалуй, злобным в природе, его совет звучит. Каждый, кто владеет Java, знает, как найти свой путь вокруг Java API и использовать его в качестве своего первого источника в тот момент, когда у вас есть вопрос схожий с вашим характером. Изучение того, как найти вещи в Java API, имеет первостепенное значение. Java благословляется тем, что есть один из лучших наборов документа API. – whaley