Làm thế nào để xây dựng một cuộc trò chuyện đơn giản bằng netcat?


27

Tôi hiện đang làm việc trên một dự án và tôi đã triển khai một ứng dụng trò chuyện đơn giản bằng cách sử dụng các netcatthư viện.

Máy khách được nhắc nhập số cổng và lệnh

nc -l -p xxxx

nơi xxxxlà số cổng vào của khách hàng.

Tương tự, máy chủ được nhắc cho cùng một số cổng và kết nối được thiết lập bằng cách sử dụng

nc <ip_address> -p xxxx

Tuy nhiên, điều này mang lại trải nghiệm trò chuyện trống vì nó không hiển thị tên người dùng của người đang nhập tin nhắn, đại loại như

hey
hello
what's up
Nothing

Thay vào đó, tôi muốn nó là một cái gì đó như,

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

Tôi có thể sử dụng netcatđể đạt được chức năng này hay còn điều gì khác không?


1
nckhông biết usernamevà không thể gửi nó. Chỉ có thể làm là gõ tin nhắn theo định dạng Bob: hello.
2707974

Tôi muốn tránh điều đó chính xác. Tôi cũng mở các chương trình thay thế có thể đạt được chức năng tương tự.
Sachin Kamath

Cố gắng tìm giải pháp trong câu trả lời
2707974

Câu trả lời:


34

Bạn có thể làm một cái gì đó như thế này.

Giả sử Alice là máy chủ. Cô ấy gõ:

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

Sau đó, Bob kết nối với máy chủ đó. Anh ấy gõ:

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

Các mawkdòng chỉ thêm tên chuẩn của người đó vào "trò chuyện". Chúng ta cần -W interactivethiết lập ghi không có bộ đệm thành thiết bị xuất chuẩn và dòng đệm được đọc từ stdin.


Bây giờ Alice gõ Hi Bobvà thấy:

Hi Bob

Bob thấy:

Alice: Hi Bob

Bob loại Hi Alicevà thấy:

Alice: Hi Bob
Hi Alice

Alice thấy:

Hi Bob
Bob: Hi Alice

2
nc không thể sử dụng -s và -l cùng một lúc. -s là không bắt buộc.
Sachin Kamath

Tôi đã nhận được awk: tùy chọn `-W tương tác 'không được nhận dạng, bị bỏ qua
zt1983811

@ zt1983811 bạn cần GNU awk, không mawk.
hỗn loạn

@chaos Tôi đã sử dụng awk awk -W tương tác '$ 0 = "Alice:" $ 0' | cổng ip nc -lvk; ls -al / usr / bin / awk lrwxrwxrwx 1 root 21 ngày 27 tháng 6 06:48 / usr / bin / awk -> / etc / thay thế / awk
zt1983811

1
@ zt1983811 Đây là một mawktùy chọn, không phải gawk. Bạn đã thử nó bằng cách sử dụng mawkrõ ràng?
tráng miệng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.