如何使用 netcat 建立一个简单的聊天?

Sac*_*ath 29 command-line networking c++ netcat

我目前正在做一个项目,我已经使用这些netcat库实现了一个简单的聊天应用程序。

提示客户端输入端口号和命令

nc -l -p xxxx
Run Code Online (Sandbox Code Playgroud)

xxxx客户端输入的端口号在哪里。

同样,主机会被提示输入相同的端口号,并使用以下命令建立连接

nc <ip_address> -p xxxx
Run Code Online (Sandbox Code Playgroud)

但是,这会提供空白聊天体验,因为它不会显示键入消息的人的用户名,例如

hey
hello
what's up
Nothing
Run Code Online (Sandbox Code Playgroud)

相反,我希望它是这样的,

Foo : hey
Boo : hello
Foo : what's up
Boo : Nothing
Run Code Online (Sandbox Code Playgroud)

我可以用它netcat来实现这个功能还是有其他任何东西可以做到这一点?

cha*_*aos 36

你可以做这样的事情。

假设Alice是服务器。她打字:

mawk -W interactive '$0="Alice: "$0' | nc -l -p <port_number> <ip_of_alice>
Run Code Online (Sandbox Code Playgroud)

然后Bob连接到该服务器。他打字:

mawk -W interactive '$0="Bob: "$0' | nc <ip_of_alice> <port_number>
Run Code Online (Sandbox Code Playgroud)

这些mawk行只是将人的名字添加到“聊天”中。我们需要-W interactive将无缓冲写入设置为 stdout 并从 stdin 设置行缓冲读取。


现在爱丽丝输入Hi Bob并看到:

Hi Bob
Run Code Online (Sandbox Code Playgroud)

鲍勃看到:

Alice: Hi Bob
Run Code Online (Sandbox Code Playgroud)

Bob 输入Hi Alice并查看:

Alice: Hi Bob
Hi Alice
Run Code Online (Sandbox Code Playgroud)

爱丽丝看到:

Hi Bob
Bob: Hi Alice
Run Code Online (Sandbox Code Playgroud)

  • nc 不能同时使用 -s 和 -l。-s 不是必需的。 (2认同)