Как отправить однобайтовый символ в сокет сервера с помощью netcat? - PullRequest
4 голосов
/ 07 февраля 2012

Уже есть работающий серверный сервис через сокет, и я хотел бы протестировать его через netcat.Я использую Mac OS X Lion.В настоящее время я могу подключиться к серверу через порт, чтобы отправить пакет, но пакет содержит неверное значение.Вот подробности:

Мне нужно отправить символ 'm' на сервер, и сервер вернет 00000000, нулевой байт в качестве ответа.Парень из сервера сказал мне, что сервер получает «A0», когда я посылаю «m», а сервер получает «313039A», когда я посылаю «109».Как определить формат отправки или что-то, мне просто нужно отправить «м» (01101101)?

1 Ответ

16 голосов
/ 07 февраля 2012

Вы можете отправить только "м" с

echo -n 'm' | nc <server> <port>

Вы можете легко проверить, что вы отправляете на локальном компьютере:

# in one Terminal start the listener:
$ nc -l 1234 | hexdump -C
00000000  6d                                                |m|
00000001

# in other Terminal send the packet:
$ echo -n 'm' | nc 127.0.0.1 1234

nc с радостью отправит / получит NUL байтов - с этим проблем нет:

# sending side
$ echo -n X | tr X '\000' | nc 127.0.0.1 1234

# receiving side
$ nc -l 1234 | hexdump -C
00000000  00                                                |.|
00000001
...