与 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 值将以两个字节为前缀,作为后续字符串的长度。