(Netty) клиент Python для сервера Java, ASCII для двоичного или шестнадцатеричного - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно использовать клиент Python для подключения к серверу Netty (на базе JAVA).

Клиент:

UDP_IP = "127.0.0.1"
UDP_PORT = 9999
MESSAGE = "16,01,12,03,1b,14,30,23,8000,03E8,0000,0000"
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.sendto(MESSAGE, (UDP_IP, UDP_PORT))

Но сервер Netty показывает:

31 362c 30 31 2c 31 32 2c 30 33 2c 31 62 2c 31
34 2c 33 30 2c 32 33 2c 38 30 30 30 2c 30 33 45
38 2c 30 30 30 30 2c 30 30 30 30

Это выглядит как "ASCII-hex" ...

Что мне нужно сделать, чтобы я получил "16,01,12,03,1b, 14,30,23,8000,03E8,0000, 0000 "?

Спасибо !!

1 Ответ

0 голосов
/ 12 декабря 2018

Вам нужно будет преобразовать ByteBuf в String.При этом вам нужно будет учитывать фрагментацию, так как TCP не гарантирует, что все будет получено в одном пакете.Для этого вы, скорее всего, захотите добавить к сообщению префикс с некоторым полем, которое сообщит вам, как долго это сообщение.

Для этого вы можете использовать LengthFieldBasedFrameDecoder в netty, а затем добавить StringDecoder.

...