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

2024-10-02 10:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个简单的字符串从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?


Tags: 字符串服务器numbernewdataportsocketjava

热门问题