문제

할 수 있습니다 고객 UNIX 도메인 소켓 (AF_UNIX 유형)을 통해 데이터를 푸시하십시오. 바쁘다 수신 종료가 부하에 대처할 수없는 경우?

또는

흐름 제어를 처리하기 위해 소켓 위에 클라이언트-서버 프로토콜이 있어야합니까?

도움이 되었습니까?

해결책

이를 프로토콜에 포함시키지 않으면 서버가 클라이언트에게 정보 보내기를 일시 중지하도록 지시 할 수있는 방법이 없습니다.

다른 팁

UNIX 도메인 소켓으로 차단 전송을 확실히 수행 할 수 있습니다. 수신 측면의 수신 버퍼가 가득 차 있거나 미결제 (미등록) 소켓 버퍼 수가 너무 높으면 발신자가 차단됩니다.

SOCK_STREAM UNIX 도메인 소켓은 TCP 소켓처럼 작동합니다. SOCK_DGRAM UNIX 도메인 소켓은 UDP와 같이 작동합니다. UNIX 도메인 데이터 그램은 주문 내 배송을 보장하는 반면 UDP 소켓은 다시 주문하거나 삭제할 수 있습니다. (또한 UNIX 도메인 소켓을 사용하여 파일 디스크립터를 보내고 프로세스간에 사용자 자격 증명을 전달할 수 있으며,이 중 어느 것도 TCP, UDP 또는 파이프로 수행 할 수 없습니다.)

따라서 모든 유형의 UNIX 도메인 소켓에 의해 인 주문 배송이 보장되므로, 다른 일을 하느라 바쁠 때 수신기는 수신을 중단 할 수 있으며, 더 이상 버퍼 공간이 없을 때 발신자가 자동으로 차단됩니다 (또는 알림을받습니다. 소켓에 비 차단 작업을 요청하면 더 이상 버퍼 공간이 없음). 그런 다음 수신기가 다시 수신을 시작하면 발신자가 더 많은 것을 보낼 수 있습니다.

서버가 '바쁘다'와 특정 신호를 다시 전송하는 서버 (예 : HTTP의 503 서비스를 사용할 수 없음)를 보냅니다. 일정 시간 후에 클라이언트 측 연결을 시간 초과로 설정할 수도 있고 타임 아웃 이벤트를 받으면 서버가 바쁘기 때문에 해석 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top