검색하고 이미 위키 백과 항목 과 다른 곳을 살펴 봤지만 프로그래밍 경험이 있어도 실제로 개념을 파악하지 못합니다. 저를 열 살짜리처럼 취급하고 소켓 통신에 대해 명확하게 설명해 주시겠습니까?
검색하고 이미 위키 백과 항목 과 다른 곳을 살펴 봤지만 프로그래밍 경험이 있어도 실제로 개념을 파악하지 못합니다. 저를 열 살짜리처럼 취급하고 소켓 통신에 대해 명확하게 설명해 주시겠습니까?
답변:
예를 들어 보겠습니다. 주소에없는 친구와 대화 / 채팅하고 싶다고 가정 해 보겠습니다. 이를 위해서는 "통신 채널"을 설정해야합니다. 전화를 사용하여이 통신을 수행하려고합니다. 도시에는 모든 집으로 확장되는 전화선 네트워크가 있다는 것을 알고 있습니다.
이제 집에는 전화 소켓이 있고 친구 집에는 전화 소켓이 있습니다. 통신이 이루어 지려면 통신의 양쪽 끝에서 전화기를 소켓에 꽂아서 친구와 네트워크에 연결해야합니다. 프로그래밍의 소켓은 개념적으로 전화 소켓과 동일합니다.
프로그래밍에는 서로 통신하려는 두 개의 프로세스 (프로그램 실행)가 있습니다. 그러기 위해서는 그들 사이에 커뮤니케이션 링크를 만들어야합니다. 다시 말하지만, 사용 가능한 네트워크가 있으며 일종의 소켓을 사용하여이 네트워크에 연결하면됩니다. 유닉스 소켓은 네트워크에이 연결 / 플러그 기능을 제공하는 소켓 중 하나입니다. 따라서 두 프로그램 각각에는 소켓을 통해 네트워크에 연결하는 작업을 수행하는 코드가 있습니다.
나머지는 세부 사항입니다.
유닉스 소켓은 양방향 소켓입니다. IP 기반 소켓과 마찬가지로 친숙하고 아마도 파이프와 비슷합니다.
그들은 흥미로운 특성의 작은 세트를 가지고 있습니다 :
본질적으로 그것들은 다른 소켓과 동등합니다-파이프보다 약간 더 흥미로운 속성을 가지고 있지만 그렇지 않으면 근본적으로 다르지 않습니다. 일반적으로 파이프보다 IPC 대기 시간이 길고 버퍼가 더 큽니다. 튜닝 할 수는 있지만 플랫폼에 따라 다릅니다.
기억해야 할 마지막 흥미로운 속성은 파일 시스템을 네임 스페이스로 사용한다는 것입니다. 따라서 이전 관계가없는 소프트웨어에서 익명 파이프가 아닌 명명 된 파이프와 비슷합니다. 추상 네임 스페이스 소켓은 동일하지만 "파일"경로가 존재하지 않아도됩니다.
그보다 더 깊은 것은 없습니다-그들은 전형적인 파이프와 근본적으로 다른 슈퍼 비밀 숨겨진 속성을 가지고 있지 않습니다.
Linux 소켓 프로그래밍, 1 부 : TCP / IP 사용 은 저에게 아주 효과적이었습니다. IP 네트워크와 네트워크 계층에 대한 소개로 시작한 다음 C와 Python에서 간단한 에코 서버와 클라이언트를 구현하는 방법을 보여줍니다.