Como construir um chat simples usando o netcat?

26

Atualmente, estou trabalhando em um projeto e implementei um aplicativo de bate-papo simples usando as bibliotecas netcat .

O cliente é solicitado a inserir o número da porta e o comando

nc -l -p xxxx

em que xxxx é o número da porta inserido pelo cliente.

Da mesma forma, o host é solicitado para o mesmo número de porta e uma conexão é estabelecida usando

nc <ip_address> -p xxxx

No entanto, isso dá uma experiência de bate-papo em branco, pois não mostra o nome de usuário da pessoa que está digitando as mensagens, algo como

hey
hello
what's up
Nothing

Em vez disso, quero que seja algo como

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

Posso usar o netcat para obter essa funcionalidade ou há algo mais que faça isso?

    
por Sachin Kamath 25.08.2015 / 08:16

1 resposta

33

Você pode fazer algo assim.

Suponha que Alice é o servidor. Ela digita:

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

Em seguida, o Bob conecta-se a esse servidor. Ele digita:

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

As linhas mawk apenas adicionam o nome anterior da pessoa ao "bate-papo". Precisamos de -W interactive para definir gravações sem buffer para stdout e leituras de buffer de linha de stdin.

Agora, a Alice digita Hi Bob e vê:

Hi Bob

Bob vê:

Alice: Hi Bob

Bob digita Hi Alice e vê:

Alice: Hi Bob
Hi Alice

Alice vê:

Hi Bob
Bob: Hi Alice
    
por chaos 25.08.2015 / 09:11