【发布时间】:2016-02-12 18:40:29
【问题描述】:
我正在做一个简单的 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”,但我收到“不工作”并且在 Python Server 中输出数据是:“UP”
为什么不进入 if 语句?
【问题讨论】:
-
你试过调试
data包含的内容吗? -
我打印一些“数据”信息,例如:
, length = 4 and print data = UP,我还能做什么? -
当您查看 George 答案时才有意义:2bytes + 长度 = len 4。前 2 个字节之后的所有内容:data[2:]
-
@WardC 非常感谢,现在可以了 :)