我正尝试从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?