Я новичок в java Сетевое программирование. Я искал код для TCP-клиента в java.I натолкнулся на следующий пример.альтернатива методу readLine() в BufferedReader?
import java.lang.*;
import java.io.*;
import java.net.*;
class Client {
public static void main(String args[]) {
try {
Socket skt = new Socket("localhost", 1234);
BufferedReader in = new BufferedReader(new
InputStreamReader(skt.getInputStream()));
System.out.print("Received string: '");
while (!in.ready()) {}
System.out.println(in.readLine()); // Read one line and output it
System.out.print("'\n");
in.close();
}
catch(Exception e) {
System.out.print("Whoops! It didn't work!\n");
}
}
}
Клиент, кажется, считывает данные по одной «линии» за раз ?. Я подключаюсь к серверу, который передает потоки пакетов OpenFlow. Ниже приведена скриншот пакетов OpenFlow.
[http://www.openflow.org/downloads/screenshot-openflow-dissector-2008-07-15-2103.jpg][1]
После того, как я получаю полные пакеты Я хочу сбросить что к файлу, а затем позже прочитайте его, используя, например, wirehark. В приведенном выше коде они используют calss BufferedReader для чтения данных в «строках»? По крайней мере, так я понимаю. Есть ли там какие-то способы, в которых я могу получить полные пакеты, а затем записать их в файл?
Одна проблема здесь - вызов ready(). Это гарантирует, что читатель перестанет читать преждевременно. Другой закрывает сокет внутри цикла, а затем снова читает. Очень странный пример. – EJP