TEL. 053-453-6585
OPEN&CLOSE.  9:00~19:00
CLODED SHOP.  MONDAY
 
 
 

socketpair 예제

2019年8月2日

아래 첫 번째 예에서 tut5.c는 클라이언트입니다. 명명되지 않은 소켓을 생성한 다음 지정된 명령줄 인수(시작 시 서버에서 인쇄한 값)를 사용하여 서버에 연결합니다. 소켓의 예는 perlipc를 참조하십시오쌍 사용. Perl 5.8 이상은 시스템에서 소켓을 구현하지만 소켓쌍을 구현하지 않는 경우 IP 소켓을 사용하여 소켓 쌍을 로컬 호스트로 에뮬레이트합니다. 양방향 스트림 통신을 위해 연결된 소켓 쌍을 얻으려면 socketpair() 함수를 호출합니다. 이 함수는 도메인, 통신 스타일 및 프로토콜을 인수로 합니다. 이러한 인수는 다음 예제에 나와 있습니다. 두 번째 예에서 tut6.c는 서버입니다. 소켓을 만들고 포트 번호를 바인딩합니다. 그런 다음 클라이언트 프로그램이 알아야 하는 포트 번호를 인쇄합니다. 해당 소켓을 닫으면 연결이 끊어질 수 있습니다.

소켓 쌍은 UNIX 도메인이라고 하는 하나의 도메인에 대해서만 구현되었습니다. 간단히 말해서 도메인은 소켓에 바인딩될 수 있는 이름 공간이며 특정 다른 규칙을 의미합니다. 다음 섹션에서 도메인과 프로토콜을 자세히 살펴보겠습니다. 소켓 쌍은 또한 사용하기 간단하고, 양방향 통신을 허용의 추가 장점을 가지고있다. 그러나 소켓 쌍은 통신 프로세스가 공통 프로세스의 하위 프로세스여야 합니다. 읽기와 쓰기에 대한 다양한 호출은 매개 변수와 함께 아래에 표시됩니다. 각 함수에 대한 매개 변수는 다양한 호출의 동작의 차이를 반영합니다. 이 장의 예제에서는 읽기() 및 write() 호출이 가능할 때마다 사용되었습니다. 때로는 다른 쪽 끝에 읽지 않은 우선 순위가 낮은 데이터가 있을 수 있는 연결을 통해 우선 순위가 높은 데이터를 보내야 하는 경우가 있습니다. 예를 들어 사용자 인터페이스 프로세스는 명령을 해석하고 스트림 연결을 통해 다른 프로세스로 전송할 수 있습니다. 사용자가 모든 미해결 요청을 취소하는 명령을 입력할 때 사용자 인터페이스가 아직 처리되지 않은 요청으로 스트림을 채웠을 수 있습니다.

우선 순위가 낮은 데이터 이후에 처리될 우선 순위가 높은 데이터를 대기하는 대신 OOB(대역 외) 데이터로 전송할 수 있습니다. 상위 및 자식이 파이프를 통한 양방향 통신이 필요한 경우 부모는 각 방향에서 사용할 파이프 두 개를 만듭니다. (계획에 따라 위의 예제에서 부모와 자식 모두 사용하지 않는 소켓을 닫습니다. 사용하지 않은 설명자는 닫을 필요는 없지만 사용하는 것이 좋습니다. 다음 예제에서는 인터넷 도메인 데이터그램이 명령줄 인수에서 이름을 얻은 수신기로 전송됩니다. 명령줄의 형태는 소켓이 닫히면 연결이 소멸됩니다. 연결이 종료된 후에도 프로세스가 메시지를 계속 보내는 경우 SIGPIPE 신호가 프로세스로 전송됩니다. 신호를 처리하기 위해 명시적 작업을 수행하지 않는 한(신호() 또는 시그액션()참조) 프로세스가 종료됩니다. 연결 소켓에서 메시지를 읽습니다. 활성 연결에서 읽는 것은 일반적으로 데이터를 사용할 수 있게 될 때까지 차단됩니다. 읽은 바이트 수가 반환됩니다. 연결이 소멸되면 read() 호출이 즉시 반환됩니다.

반환되는 바이트 수는 0입니다. 이전에는 신호와 파이프가 IPC가 달성된 주요 메커니즘을 제공했습니다. 그러나 신호는 신호 유형만 전송할 수 있기 때문에 제한된 값입니다. 파이프는 신호보다 더 효과적이지만 파이프의 두 프로세스 양 끝 사이의 단일 방향으로 파일 설명자 기반 I/O를 공통 조상에 의해 설정해야 합니다. 또한 초기 구현에서 파이프는 단일 컴퓨터 내에서의 통신으로 제한되었습니다.

コメント