accept 예제

Posted on

DECnet과 같이 명시적인 확인이 필요한 특정 프로토콜의 경우 accept()는 단순히 다음 연결 요청을 큐에 짜는 것일 뿐 확인을 의미하지 않는 것으로 간주될 수 있습니다. 확인은 새 파일 설명자에서 일반 읽기 또는 쓰기를 통해 암시할 수 있으며 새 소켓을 닫으면 거부가 암시될 수 있습니다. 현재, 만 DECnet 리눅스에서 이러한 의미 체계를 가지고. 큐에 보류 중인 연결이 없고 소켓이 비차단으로 표시되지 않으면 수락() 연결이 있을 때까지 호출을 차단합니다. 소켓이 비차단으로 표시되고 큐에 보류 중인 연결이 없는 경우 accept() 오류 EAGAIN 또는 EWOULDBLOCK오류가 발생하면 실패합니다. Linux에서 accept()에 의해 반환된 새 소켓은 수신 소켓에서 O_NONBLOCK 및 O_ASYNC와 같은 파일 상태 플래그를 상속하지 않습니다. 이 동작은 표준 BSD 소켓 구현과 다릅니다. 이식 가능한 프로그램은 파일 상태 플래그의 상속 또는 비상속에 의존해서는 안 되며 accept()에서 반환된 소켓에 필요한 모든 플래그를 항상 명시적으로 설정해야 합니다. 참고: 통일 상법 2-606(1) 항에 따라 구매자는 상품을 수락합니다: 1) 그 또는 그녀가 그들을 유지할 것이라는 것을 검사 할 수있는 합리적인 기회 후 판매자에게 표시; 2) 그 또는 그녀가 효과적으로 그들을 거부하지 못하는; 3) 판매자의 상품 소유권과 일치하지 않는 방식으로 행동하는 행위 참고: 오퍼가 수락되면 계약이 생성됩니다. SIGIO가 전달되거나 선택(2), poll(2) 또는 epoll(7)이 비동기 네트워크 오류또는 accept() 전에 다른 스레드에 의해 연결이 제거되었을 수 있으므로 가독성 이벤트를 반환하는 연결이 항상 호출되지 않을 수 있습니다.

이 경우 다음 연결이 도착할 때까지 통화가 차단됩니다. accept()가 차단되지 않도록 하려면 전달된 소켓 sockfd에 O_NONBLOCK 플래그가 설정되어 있어야 합니다(소켓(7)참조). 플래그가 0이면 accept4()는 accept()와 동일합니다. 다음 값은 다른 동작을 얻기 위해 플래그에서 Bitwise ORed일 수 있습니다: 소켓에서 들어오는 연결에 대한 알림을 받으려면 select(2), poll(2) 또는 epoll(7)을 사용할 수 있습니다. 새 연결을 시도할 때 읽을 수 있는 이벤트가 배달되며 accept()를 호출하여 해당 연결에 대한 소켓을 얻을 수 있습니다. 또는 소켓에서 활동이 발생할 때 SIGIO를 제공하도록 소켓을 설정할 수 있습니다. 자세한 내용은 소켓(7)을 참조하십시오. 중계 영어 수락자는 “은혜롭게, 호의를 베풀고, 승인하고, 합당하다고 판단한다”, 중세 라틴어 수락자로부터 빌린, 라틴어로 돌아가서 라틴어로 돌아가 “정기적으로 받고, 복종하고, 인정하라”는 가시페르의 빈번한 “받아들이고, 수신, 수락, 배우고, 해석,” 광고 – + capere “걸릴”- 더 heave 항목에서 1 인수 가드는 sockaddr 구조에 대한 포인터입니다. 이 구조는 통신 계층에 알려진 피어 소켓의 주소로 채워져 있습니다. 반환된 주소 추가의 정확한 형식은 소켓의 주소 패밀리(socket(2) 및 해당 프로토콜 맨 페이지 참조)에 의해 결정됩니다. addr가 NULL이면 아무 것도 채워지지 않습니다.

이 경우 addrlen은 사용되지 않으며 NULL이어야 합니다. 인수 sockfd는 소켓(2)으로 만들어지고 바인드(2)가 있는 로컬 주소에 바인딩된 소켓이며 listen(2) 후에 연결을 수신 대기하는 소켓입니다. 또한 새 소켓및 프로토콜에 대해 정의된 대로 네트워크 오류가 반환될 수 있습니다.