2013-09-02 3 views

답변

48

파이프와 소켓의 차이점은 무엇이며 언제/어떻게 선택해야합니까? ...

파이프와 소켓은 모두 바이트 스트림을 처리하지만, 다른 방법으로 그것을 할

  • 파이프는 특정 호스트 내에 존재하는, 그들은 가상 파일 사이 버퍼링를 참조하거나 연결 해당 호스트 내에서 프로세스의 출력/입력. 파이프 내에 패킷의 개념은 없습니다.
  • 소켓은 IPv4 또는 IPv6을 사용하여 통신을 패킷 화합니다. 그 통신은 localhost 이상으로 확장 될 수 있습니다. 소켓의 다른 끝점은 동일한 IP 주소를 공유 할 수 있습니다. 그러나 다른 TCP/UDP 포트에서 수신 대기해야합니다.

사용 :

  • 사용 파이프 :
    • 특정 서버 내 파일로 데이터 읽기/쓰기 할 . C를 사용하는 경우 파이프에 read()write()이 있습니다. 다른 프로세스의 입력으로 한 프로세스의 출력을 연결할 때
    • ... 다른의 IPv4/IPv6의 엔드 포인트 사이에서 데이터를 전송하는 popen()
  • 를 사용하여 소켓을 참조하십시오. 당신은 파이프 소켓을 가입 netcat 또는 socat을 사용할 수 있습니다, 매우 자주, 이것은 다른 호스트 사이에 발생하지만, 소켓은

BTW 동일한 호스트 내에서 사용할 수 있습니다.

8

마이크가 제공 한 대답을 완료하려면 POSIX 호환 운영 체제에서 사용할 수있는 UNIX 도메인 소켓의 존재를 언급하는 것이 중요합니다. 사용법 측면에서 "정상적인"인터넷 소켓과 매우 비슷하지만 순전히 머신에 국한되어 있습니다 (물론 인터넷 소켓도 로컬로 작동 할 수 있습니다). 따라서 거의 파이프처럼 작동합니다. 유닉스 파이프 단방향 정의 때문에 거의 (또한 네임드 파이프라고도 함)

파이프 및 FIFO와는 단방향 간 통신 채널을 제공한다. 파이프에는 읽기 끝이 있고 쓰기는 끝입니다. 파이프의 쓰기 끝 부분에 쓰여진 데이터는 파이프 끝에있는 끝에서 읽을 수 있습니다. 이런 식으로, 권한이없는 프로세스가 설명 모든 파일에 액세스 할 수 있습니다 보냈습니다 : 이

UNIX 도메인 소켓은 또한 데이터 외에, 그들은 또한 파일 기술자을 보낼 수 있도록, 매우 특이한 기능이 이

합니다 ( man page pipe(7)에서 발췌) 소켓 위에. Wikipedia에 따르면이 기술은 ClamAV 바이러스 백신 검색 데몬에서 사용됩니다.

관련 문제