다음을 통해 소켓에 연결합니다 nc -U
.
user@node:~$ sudo nc -U service\@name.18822.sock
user@node:~$ xmpp.status
user@node:~$ connected
이 연결을 너무 오랫동안 열어두면 CLI로 돌아가서 새 소켓이 생성됩니다. 다음과 같이 명령을 소켓에 에코하면:
echo xmpp.status | sudo nc -U service\@name.18822.sock
그러면 새 소켓이 생성되지 않습니다. 프로세스와 덜 관련되고 Unix/Linux 내부에 더 가깝다고 생각하기 때문에 이러한 동작이 존재하는 이유가 궁금합니다.
답변1
유닉스 소켓에는 자동으로 연결을 닫는 기능이 없습니다. 서버나 클라이언트가 이를 닫아야 합니다. Netcat에 -w
언급된 옵션이 있습니다.수동:
연결과 stdin이 시간 초과 초보다 오랫동안 유휴 상태이면 연결이 자동으로 닫힙니다. -w 플래그는 -l 옵션에 영향을 주지 않습니다. 즉, nc는 -w 플래그가 있든 없든 항상 연결을 수신합니다. 기본값은 시간 초과 없음입니다.
그러나 이 옵션을 지정하지 않으므로 netcat은 기본적으로 연결을 무기한 열린 상태로 유지합니다.
많은 서버가 연결에 대해 암시적 시간 제한을 설정합니다. 이는 잘못 작성된 클라이언트가 리소스를 씹는 것을 방지하기 위한 것입니다. 또는 연결 중인 서버가 재설정되고 있을 수도 있습니다. 이로 인해 모든 연결이 닫힙니다.
귀하의 질문에 따르면 이 포트가 정확히 무엇인지 잘 모르겠습니다. 그러나 간단히 말해서 이것은 Linux/Unix의 문제라기보다는 xmpp의 문제입니다.