Java(客户端)与Python(服务器)的通信
我正在做一个简单的Java客户端应用程序,它应该与Python服务器通信。我可以轻松地将字符串发送到Python服务器并在控制台中打印,但当我尝试在IFs中使用接收到的字符串时,它永远不会进入IF语句,即使它应该这样做 下面是Java客户端发送消息的代码Java(客户端)与Python(服务器)的通信,java,python,sockets,chat,Java,Python,Sockets,Chat,我正在做一个简单的Java客户端应用程序,它应该与Python服务器通信。我可以轻松地将字符串发送到Python服务器并在控制台中打印,但当我尝试在IFs中使用接收到的字符串时,它永远不会进入IF语句,即使它应该这样做 下面是Java客户端发送消息的代码 socket = new Socket(dstAddress, dstPort); dataOutputStream = new DataOutputStream( socket.getO
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”,但我发现“不起作用”,在Python服务器中,输出数据是:“UP”
为什么不进入if语句?DataOutputStream的writeUTF(…)说:
首先,将两个字节写入输出流,就像
writeShort方法,提供要跟随的字节数
在python代码中,您的
数据
值将以两个字节作为后面字符串长度的前缀。您试过调试数据
包含的内容吗?我打印一些“数据”信息,如:,length=4和print data=UP,我还能做什么?当您看到George回答时,这很有意义:2字节+长度=len 4。前2个字节之后的所有内容:data[2::@WardC非常感谢,现在它可以工作了:)