Netcat kullanarak basit bir sohbet nasıl kurulur?


27

Şu anda bir proje üzerinde çalışıyorum ve netcatkütüphaneleri kullanarak basit bir sohbet uygulaması uyguladım .

İstemciden port numarasını ve komutu girmesi istenir

nc -l -p xxxx

xxxxmüşteri tarafından girilen port numarası nerede .

Benzer şekilde, ana makineden aynı bağlantı noktası numarası istenir ve

nc <ip_address> -p xxxx

Ancak, bu, mesaj yazan kişinin kullanıcı adını göstermediği gibi boş bir sohbet deneyimi sağlar.

hey
hello
what's up
Nothing

Bunun yerine, bunun gibi bir şey olmasını istiyorum.

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

netcatBu işlevi gerçekleştirmek için kullanabilir miyim , yoksa bunu yapan başka bir şey var mı?


1
ncbilmiyorum usernameve gönderemiyorum. Sadece yapabilecekleriniz mesaj biçiminde yazmaktır Bob: hello.
2707974

Bu kesin şeyden kaçınmak istiyorum. Aynı işlevi yerine getirebilecek alternatif programlara da açığım.
Sachin Kamath

Yanıtlar:


34

Böyle bir şey yapabilirsin.

Diyelim ki Alice sunucu. O yazıyor:

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

Sonra Bob o sunucuya bağlanır. O yazıyor:

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

mawkÇizgiler sadece "sohbet" için kişinin prepending adını ekler. -W interactiveArabelleğe alınmamış yazmaları stdout'a ve satır tamponlu okumaları stdin'den yapmamız gerekiyor .


Şimdi Alice türleri Hi Bobve görür:

Hi Bob

Bob görüyor:

Alice: Hi Bob

Bob türleri Hi Aliceve görür:

Alice: Hi Bob
Hi Alice

Alice görür:

Hi Bob
Bob: Hi Alice

2
nc, -s ve -l'yi aynı anda kullanamaz. -s gerekli değildir.
Sachin Kamath

Ben awk var: seçenek `-W interaktif 'tanınmayan, yoksayıldı
zt1983811

@ zt1983811 GNU'ya ihtiyacınız awkyok, değil mawk.
kaos,

@chaos awk awk kullandım -W etkileşimli '$ 0 = "Alice:" $ 0' | nc -lvk ip portu; ls -al / usr / bin / awk lrwxrwxrwx 1 kök kökü 21 Haz 27 06:48 / usr / bin / awk -> / etc / alternatifler / awk
zt1983811

1
@ zt1983811 Bu bir mawkseçenek değil gawk. mawkAçıkça kullanmayı denedin mi?
tatlı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.