NETCAT TCP-соединение с сервером/клиентом не остается открытым

Недавно я загрузил NETCAT на свой MAC (OSX El Capitan 10.11.5) через MacPorts (2.3.4).

Я создал простой TCP-сервер с:

nc -v -l -p 3456

Когда я попытался подключиться к серверу через:

nc -v локальный хост -p 3456

Я получу сообщение об открытии соединения, но соединение прервется после подключения клиента. Я думал, что соединение останется открытым, пока я не нажму CTRL-C или не введу ^D.

Нужно ли добавлять время ожидания для сохранения соединения открытым на MAC?

Кстати, друг попробовал те же команды на компьютере с Linux, и все сработало, как и ожидалось.


person ThePhantom05    schedule 22.07.2016    source источник


Ответы (1)


Существуют разные реализации nc (netcat), которые поддерживают разные параметры и должны использоваться соответствующим образом. Ваш пример не будет работать с netcat, предоставляемым операционной системой Mac в /usr/bin/nc.

Если nc в Linux ведет себя по-разному, вам следует проверить справочную страницу в обеих системах, чтобы убедиться, что используемые вами флаги и параметры действительно соответствуют вашим целям.

person raimue    schedule 04.10.2016
comment
Ты прав @Raim. Я использовал MacPorts для установки BSD netcat 1.10, и было ошибкой использовать опции -l и -p вместе. Я установил netcat через HomeBrew, и команды сработали, как и ожидалось, потому что HomeBrew установил GNU netcat 0.7.1. - person ThePhantom05; 05.10.2016
comment
GNU netcat также доступен в MacPorts в порту gnetcat. - person raimue; 05.10.2016
comment
Я видел это вчера. Не уверен, как я пропустил это еще в июле. @Раим - person ThePhantom05; 06.10.2016
comment
Для nc можно использовать флаг -k, чтобы сервер оставался открытым; но у gnetcat такой возможности нет... - person hushaohan; 29.07.2017