Я пытаюсь отправить простую строку с клиента 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?