Есть не сложный эхо сервер на жабе. Рабочий поток выглядит так:
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() отрабатывает нормально.