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


27

我目前正在从事一个项目,并且已经使用这些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
nc不知道username,无法发送。唯一可以做的就是以format键入message Bob: hello
2707974

我想避免那件事。我也开放其他可以实现相同功能的程序。
萨钦·卡玛特

尝试在此答案中
2707974

Answers:


34

你可以做这样的事情。

假设Alice是服务器。她键入:

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

然后,Bob连接到该服务器。他输入:

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

2
nc不能同时使用-s和-l。-s不是必需的。
Sachin Kamath

我得到了awk:无法识别,忽略的“ -W交互”选项
zt1983811 '16

@ zt1983811你需要GNU awk,没有mawk
混乱

@chaos我确实使用了awk awk -W交互式'$ 0 =“ Alice:” $ 0'| nc -lvk ip端口;ls -al / usr / bin / awk lrwxrwxrwx 1根root 21 Jun 27 06:48 / usr / bin / awk-> / etc / alternatives / awk
zt1983811 '16

1
@ zt1983811这不是一个mawk选项gawk。您是否使用mawk显式尝试过?
甜点,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.