Уведомления

Группа в Telegram: @pythonsu

#1 Март 21, 2013 15:41:22

wtfka
Зарегистрирован: 2013-03-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент Python <-> Сервер Java

Прошу помощи.
Есть не сложный эхо сервер на жабе. Рабочий поток выглядит так:

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() отрабатывает нормально.

Отредактировано wtfka (Март 21, 2013 15:42:14)

Офлайн

#2 Март 21, 2013 16:21:57

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Клиент Python <-> Сервер Java

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

Попробуйте
s.send('Hello World\n')

Офлайн

#3 Март 21, 2013 17:58:42

wtfka
Зарегистрирован: 2013-03-21
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Клиент Python <-> Сервер Java

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

Спасибо огромное, это сработало!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version