Wie erstelle ich einen einfachen Chat mit Netcat?

27

Ich arbeite gerade an einem Projekt und habe eine einfache Chat-Anwendung unter Verwendung der netcatBibliotheken implementiert .

Der Client wird aufgefordert, die Portnummer und den Befehl einzugeben

nc -l -p xxxx

Wo xxxxist die vom Client eingegebene Portnummer?

In ähnlicher Weise wird der Host zur Eingabe derselben Portnummer aufgefordert, und eine Verbindung wird über hergestellt

nc <ip_address> -p xxxx

Dies führt jedoch zu einem leeren Chat-Erlebnis, da der Benutzername der Person, die die Nachrichten eingibt, nicht angezeigt wird

hey
hello
what's up
Nothing

Stattdessen möchte ich es so etwas wie sein,

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

Kann ich netcatdiese Funktionalität nutzen, oder gibt es sonst noch etwas, das dies bewirkt?

Sachin Kamath
quelle
1
ncnicht bekannt usernameund kann es nicht senden. Es kann nur eine Nachricht im Format eingegeben werden Bob: hello.
2707974
Ich möchte genau das vermeiden. Ich bin auch offen für alternative Programme, die die gleiche Funktionalität erreichen können.
Sachin Kamath
Versuchen Sie, in dieser Antwort
2707974

Antworten:

34

Sie können so etwas tun.

Angenommen, Alice ist der Server. Sie schreibt:

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

Dann stellt Bob eine Verbindung zu diesem Server her. Er gibt ein:

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

In den mawkZeilen wird nur der vorstehende Name der Person zum "Chat" hinzugefügt. Wir müssen -W interactiveungepufferte Schreibvorgänge auf stdout und zeilengepufferte Lesevorgänge von stdin setzen.


Jetzt tippt Hi Bobund sieht Alice :

Hi Bob

Bob sieht:

Alice: Hi Bob

Bob tippt Hi Aliceund sieht:

Alice: Hi Bob
Hi Alice

Alice sieht:

Hi Bob
Bob: Hi Alice
Chaos
quelle
2
nc kann -s und -l nicht gleichzeitig verwenden. Das -s ist nicht erforderlich.
Sachin Kamath
Ich habe awk: Option "-W interaktiv" nicht erkannt, ignoriert
zt1983811
@ zt1983811 du brauchst GNU awk, nicht mawk.
Chaos
@chaos Ich habe awk awk -W interactive '$ 0 = "Alice:" $ 0' | verwendet nc -lvk ip port; ls -al / usr / bin / awk lrwxrwxrwx 1 root root 21. Juni 27 06:48 / usr / bin / awk -> / etc / alternatives / awk
zt1983811
1
@ zt1983811 Dies ist keine mawkOption gawk. Hast du es mawkexplizit mit probiert?
Dessert