car*_*lma 3 python java sockets
我一直在尝试在Java客户端套接字和Python服务器套接字之间发送一个简单的字符串.这是服务器套接字的代码:
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()
Run Code Online (Sandbox Code Playgroud)
并且客户端代码是:
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);
}
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我尝试读取服务器的响应,使用此:
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("echo: " + in.readLine());
}
Run Code Online (Sandbox Code Playgroud)
然后代码挂起,Python服务器没有收到任何信息,我用print测试过.
尝试先发送然后等待Java客户端服务器的响应是否有问题?
任何帮助都感激不尽.
好吧,我发现java客户端挂起,因为python服务器发送的消息没有用\ r \n显式完成,所以python代码应该是这样的:
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\r\n":
respuesta=device.send_order(variador.start_order)
conn.send(respuesta+'\r\n')
conn.close()
Run Code Online (Sandbox Code Playgroud)
我知道它应该从java,readline()和println中的方法名称中显而易见,两者都表明java以序列\ r \n结束字符串
| 归档时间: |
|
| 查看次数: |
9587 次 |
| 最近记录: |