从Java客户端向Python服务器发送字符串

时间:2019-06-16 07:24:08

标签: java python sockets encoding utf-8

我正尝试从Java客户端向Python服务器发送简单字符串

这是 Java客户端的实现:

Socket socket = new Socket(addr, PORT_NUMBER);
String message = "Hello##2##you\n"
PrintWriter outPrintWriter = new PrintWriter(socket.getOutputStream(),true);
outPrintWriter.println(answerToString);

这是 Python服务器的实现:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.settimeout(TIMEOUT)
s.bind(('', PORT_NUMBER))
s.listen(5)
conn, addr = s.accept()
data = conn.recv(4096)
print(data.decode())
strings_received = data.split("##")

但是解码时出现以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xac in position 0: invalid start byte

我了解到Java默认是将消息编码为utf-16,所以我尝试了:

print(data.decode('utf-16'))

但这并不能解决问题,因为我在输出中获得了“ Ԁ”。

此外,当我转到下一行时,出现以下错误:

TypeError: a bytes-like object is required, not 'str'

如何将字符串从Java正确发送到Python?

0 个答案:

没有答案