Как построить простой чат с помощью netcat?

В настоящее время я работаю над проектом, и я реализовал простое приложение чата, используя netcat библиотеки.

Клиенту предлагается ввести номер порта и команду

nc -l -p xxxx

где xxxx это номер порта, введенный клиентом.

Аналогично, хост запрашивается для того же номера порта, и соединение устанавливается с использованием

nc <ip_address> -p xxxx

Тем не менее, это дает пустой опыт чата, поскольку он не показывает имя пользователя человека, печатающего сообщения, что-то вроде

hey
hello
what's up
Nothing

Вместо этого я хочу, чтобы это было что-то вроде

Foo : hey
Boo : hello
Foo : what's up
Boo : Nothing

Могу ли я использовать netcat для достижения этой функциональности или есть что-нибудь еще, что делает это?

1 ответ

Решение

Вы можете сделать что-то вроде этого.

Предположим, Алиса является сервером. Она печатает:

mawk -W interactive '$0="Alice: "$0' | nc -l -p <port_number> <ip_of_alice>

Затем Боб подключается к этому серверу. Он печатает:

mawk -W interactive '$0="Bob: "$0' | nc <ip_of_alice> <port_number>

mawk линии просто добавляет в чат чередуемое имя человека. Нам нужно -W interactive установить небуферизованные записи в stdout и строковые буферизованные чтения из stdin.


Теперь Алиса набирает Hi Bob и видит:

Hi Bob

Боб видит:

Alice: Hi Bob

Боб типы Hi Alice и видит:

Alice: Hi Bob
Hi Alice

Алиса видит:

Hi Bob
Bob: Hi Alice

Немного назад я на самом деле сделал одну программу, которая позволяет общаться (через IP-адрес) в локальной сети, должны быть ошибки, у меня действительно не было времени на ее обслуживание, но она должна дать вам что-то для начала.

https://github.com/Aeres-u99/ncChat

PS: Я также пробовал добавить поддержку обмена файлами:P

Другие вопросы по тегам