Найти - Пользователи
Полная версия: Клиент Python <-> Сервер Java
Начало » Python для новичков » Клиент Python <-> Сервер Java
1
wtfka
Прошу помощи.
Есть не сложный эхо сервер на жабе. Рабочий поток выглядит так:
InputStream input  = clientSocket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
OutputStream output = clientSocket.getOutputStream();
long time = System.currentTimeMillis();
output.write((reader.readLine()).getBytes());
output.close();
input.close();
System.out.println("Request processed: " + time);

Есть клиент написанный на питоне, код:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 9000))
s.send('Hello World')
s.settimeout(1)
print s.recv(1024)
s.close()

Проблема в том, что при запуске всего этого у клиента срабатывает только метод s.send(), следующий за ним s.recv() говорит socket.timeout: timed out.
Если в сервере убрать BufferedReader и заменить output.write('Hello world'). Соответственно в клиенте убрать s.send('Hello World'), то s.recv() отрабатывает нормально.
reclosedev
АПИ Java'ских библиотек не знаю, но в коде
reader.readLine()
подозреваю, что он читает строку, которая должна закончится \r\n или \n, а в
s.send('Hello World')
нет этих символов, поэтому он блокируется.

Попробуйте
s.send('Hello World\n')
wtfka
reclosedev
АПИ Java'ских библиотек не знаю, но в кодеreader.readLine()подозреваю, что он читает строку, которая должна закончится \r\n или \n, а в s.send('Hello World')нет этих символов, поэтому он блокируется.Попробуйтеs.send('Hello World\n')

Спасибо огромное, это сработало!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB