У меня проблема с программированием сокетов на Java. Существует сервер, написанный на питоне, который я не должен изменять.Чтение всей строки из серверного сокета, который не был закрыт
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send('from server\nnewline\0')
data = s.recv(BUFFER_SIZE)
s.close()
Теперь я хочу написать код на Java, который считывает строку с сервера. Что-то вроде этого:
public static String readStr(Socket client) throws IOException {
InputStreamReader inStream = new InputStreamReader(
client.getInputStream());
BufferedReader inBuff = new BufferedReader(inStream);
String answer = new String();
String str = inBuff.readLine();
while (str!=null) {
answer = answer.concat(str + "\n");
str = inBuff.readLine();
}
answer = answer.substring(0, answer.length() - 1);
System.out.println("answer:\n "+answer);
return answer;
}
Но, кажется, что он блокирует на линии str = inBuff.readLine();
на последней строке сообщения. Я попробовал метод read()
, но он тоже был заблокирован.
Я использовал класс nputStreamReader. какой другой метод вы рекомендуете? @ user6015630 – user63835
Вы можете использовать read (char [] cbuf, int off, int len) в BufferedReader – user6015630