설명서를 읽었 는데 이것이 의미하는 nc
바가 나와 있습니다.nc -l
nc
원격 호스트에 대한 연결을 시작하는 대신 들어오는 연결을 수신하도록 지정하는 데 사용됩니다 . 이 옵션을 , 또는 옵션과 함께-p
사용-s
하면 오류가 발생합니다-z
. 또한 이 옵션으로 지정된 시간 초과는-w
무시됩니다.
내가 이해하는 한, 작업은 nc -l
서버처럼 보입니다. 예를 들어, 동일한 서버에서 터미널은 nc -l 9000
포트 9000에서 수신 대기합니다. 다른 터미널이 nc localhost 9000
클라이언트가 됩니다. 이렇게 하면 두 번째 터미널에서 첫 번째 터미널로 메시지를 보낼 수 있습니다.
하지만 오늘은 Apache Flink를 배우고 있습니다. Flink의 Hello World는 다음과 같습니다.https://ci.apache.org/projects/flink/flink-docs-stable/getting-started/tutorials/local_setup.html
$ nc -l 9000
lorem ipsum
ipsum ipsum ipsum
bye
nc -l
여기서의 작업은 수신 포트가 아닌 메시지를 보내는 작업인 것 같습니다 .
나는 지금 혼란스럽다.
답변1
들어오는 연결의 대상이 된다고 해서 netcat이 데이터를 보내는 것을 막지는 못합니다. 클라이언트가 연결을 설정하면 클라이언트와 데이터를 보내고 받을 수 있습니다. 이 경우 데이터를 Flink 클라이언트로 보냅니다.
답변2
nc -l 9000
예제에서는 서버 역할을 합니다. Flink 애플리케이션은 이 서버에 연결하고 입력을 기다립니다. 이 명령을 실행하면 Flink가 시작됩니다 nc
.
이제 그들은 연결되었습니다. 단어를 입력하면 nc
Flink 응용 프로그램이 응답합니다(출력 파일에 기록).
이를 사용하여 애플리케이션에 데이터를 전송한다는 사실은 약간 뒤떨어져 보일 수 있지만 Flink가 이러한 방식으로 통신하는 것을 nc -l
막을 수는 없습니다 .nc
답변3
nc -l <port>
물론 a를 열고 <port>
연결을 수신합니다.
아래 단계에 따라 프로세스를 확인할 수 있습니다.
1 단계:터미널을 열고 다음을 수행하여 들어보세요.nc -l 32000
2 단계:다른 터미널을 열고 열려 있는 포트에 연결하세요.telnet localhost 32000
2a단계:두 터미널 중 하나에 문자열을 입력하면 다른 터미널의 리스너로 전송됩니다.
또한 netstat를 실행하면 nc -l 32000
연결 상태가 리스너로 표시됩니다.
netstat -atn | grep 32000 tcp4 0 0 *.32000 *.* LISTEN