与 Python(服务器)的通信 Java(客户端)
Communication Java(Client) with Python(Server)
我正在做一个简单的 Java 客户端应用程序,它应该与 Python 服务器通信。我可以轻松地将字符串发送到 Python 服务器并在控制台中打印它,但是当我尝试在 IF 中使用接收到的字符串时,它永远不会进入 IF 语句,即使它应该。
这里是Java客户端发送消息代码
socket = new Socket(dstAddress, dstPort);
dataOutputStream = new DataOutputStream(
socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
if(msgToServer != null){
dataOutputStream.writeUTF("UP");
}
System.out.println(dataInputStream.readLine());
和Python服务器代码:
import socket
HOST = ''
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)
print 'Socket now listening'
conn, addr = s.accept()
print 'Connected to: ' + addr[0] + ':' + str(addr[1])
data = conn.recv(1024)
if data == "UP":
conn.sendall('Works')
else:
conn.sendall('Does not work')
conn.close()
s.close()
print data
所以当我发送到 Python 服务器 "UP" 时,它应该发送回 Java 客户端 "Works",但我收到 "Does not work" 并在 Python服务器输出数据为:"UP"
为什么不进入 if 语句?
DataOutputStream#writeUTF(...)
的JavaDoc说:
First, two bytes are written to the output stream as if by the
writeShort method giving the number of bytes to follow
在您的 python 代码中,您的 data
值将以两个字节为前缀,作为后续字符串的长度。
我正在做一个简单的 Java 客户端应用程序,它应该与 Python 服务器通信。我可以轻松地将字符串发送到 Python 服务器并在控制台中打印它,但是当我尝试在 IF 中使用接收到的字符串时,它永远不会进入 IF 语句,即使它应该。
这里是Java客户端发送消息代码
socket = new Socket(dstAddress, dstPort);
dataOutputStream = new DataOutputStream(
socket.getOutputStream());
dataInputStream = new DataInputStream(socket.getInputStream());
if(msgToServer != null){
dataOutputStream.writeUTF("UP");
}
System.out.println(dataInputStream.readLine());
和Python服务器代码:
import socket
HOST = ''
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)
print 'Socket now listening'
conn, addr = s.accept()
print 'Connected to: ' + addr[0] + ':' + str(addr[1])
data = conn.recv(1024)
if data == "UP":
conn.sendall('Works')
else:
conn.sendall('Does not work')
conn.close()
s.close()
print data
所以当我发送到 Python 服务器 "UP" 时,它应该发送回 Java 客户端 "Works",但我收到 "Does not work" 并在 Python服务器输出数据为:"UP"
为什么不进入 if 语句?
DataOutputStream#writeUTF(...)
的JavaDoc说:
First, two bytes are written to the output stream as if by the writeShort method giving the number of bytes to follow
在您的 python 代码中,您的 data
值将以两个字节为前缀,作为后续字符串的长度。