Я пытаюсь отправить простую строку между сокетом Java-клиента и гнездом сервера Python. Это код для сокета сервера:Подключение сокета python и java-сокета
HOST=''
PORT=12000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADRR,1)
s.bind((HOST,PORT))
s.listen(5)
device=variador()
while True:
conn,addr=s.accept()
if data=="turn_on":
respuesta=device.send_order(variador.start_order)
conn.send(respuesta+'\n')
conn.close()
и клиентский код:
try {
Socket socket = new Socket("192.168.10.171", 12000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
BufferedReader stdIn = new BufferedReader(
new InputStreamReader(System.in));
out.print(command);
out.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
System.err.println("Unknown Host.");
// System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection.");
// System.exit(1);
}
Все работает хорошо, пока я пытаюсь прочитать ответ сервера, с помощью этого:
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
, тогда код зависает, и сервер Python не получает никакой информации, которую я тестировал с помощью печати.
Есть ли проблема с попыткой отправить сначала, а затем ждать ответа с сервера на Java-клиенте?
Любая помощь будет очень признательна.
Вы ничего не получили на сервере? Вместо этого вы, похоже, принимаете только соединение, и если условие истинно, вы записываете некоторые данные и напрямую закрываете соединение. Если условие не соответствует действительности, вы, похоже, совсем не закрываете сокет, но ничего не получаете. –
Когда клиент java отправляет «turn_on», я могу распечатать его на консоли в python, поэтому он приходит. –