Как построить простой чат с помощью 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