명령 행에서 Unix Named Socket 작성


답변:


21

소켓에 대해 mkfifo와 정확히 일치하는 것은 없습니다. 즉, "매달린"소켓을 만드는 명령이 없습니다. 이는 역사적인 이유입니다. 파일 시스템에서 소켓 이름 / 아이 노드를 생성하는 서버의 함수 bind ()는 이름이 이미 사용 된 경우 실패합니다. 즉, 서버는 기존 소켓에서 작동 할 수 없습니다.

따라서 이전에 소켓을 만든 경우 먼저 서버에서 소켓을 제거해야합니다. 혜택이 없습니다. Gregory의 답변에서 볼 수 있듯이 netcat과 같이 서버를 유지하면 소켓을 만들 수 있습니다. 서버가 사라지면 이전 소켓이 사라집니다. 새 서버에는 새 소켓이 있으며 소켓 이름이 동일하더라도 모든 클라이언트를 다시 연결해야합니다.



8

파이썬을 사용할 수 있습니다 :

python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"

또한 C는 이 답변을 참조하십시오 .


mksock() { SOCK="$1" python -c "import os, socket as s; s.socket(s.AF_UNIX).bind(os.environ['SOCK'])"; }쉬운 쉘 사용을 위해 : mksock /tmp/test.sock
Tino

0

나는 netcat그런 경우에 단순히 사용 하고 듣고 있습니다.

nc -lkU aSocket.sock

netcat-openbsd 를 사용해야합니다 . netcat-traditional 에는 -UUnix Domain 소켓 용 스위치 가 없습니다 .


-k 현재 연결이 완료된 후 nc가 다른 연결을 수신 대기하도록합니다. -l 옵션없이이 옵션을 사용하면 오류가 발생합니다. -U UNIX 도메인 소켓을 사용하도록 지정합니다.
Johan Boulé
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.