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보낼 수 없습니다. 형식으로 메시지를 입력하는 것만 가능합니다 Bob: hello.
2707974

나는 그 정확한 것을 피하고 싶다. 또한 동일한 기능을 수행 할 수있는 대체 프로그램을 사용할 수 있습니다.
Sachin Kamath

답변:


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

@ zt1983811은 GNU awk가 아니라 필요합니다 mawk.
혼돈

@chaos awk awk -W interactive '$ 0 = "앨리스 :"$ 0'| nc -lvk IP 포트; ls -al / usr / bin / awk lrwxrwxrwx 1 루트 루트 21 Jun 27 06:48 / usr / bin / awk-> / etc / alternatives / awk
zt1983811

1
@ zt1983811이 mawk옵션 은 아닌 옵션 gawk입니다. mawk명시 적으로 사용해 보셨습니까 ?
디저트
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.