kern_soaccept 커널 서비스

용도

새 소켓에 할당하여 대기 중인 첫 번째 연결을 수락합니다.

구문

#include <sys/kern_socket.h>
int kern_soaccept( ksocket_t  so,  
ksocket_t  *aso, 
struct mbuf **name, 
int nonblock )

매개변수

항목 설명
so 에 사용되는 소켓입니다. kern_solisten() 커널 서비스.
ASO 허용된 연결을 위한 새 소켓입니다. 발신자는 반드시 주소를 전달해야 합니다. ksocket_t .
이름 구조체 sockadr 주소는 mbuf 주소가 저장되어 있는 버퍼 *이름 매개변수. 호출자는 구조체의 주소를 전달해야 합니다. mbuf * 구조. 호출자는 다음을 설정합니다. mbuf 함수가 성공적으로 반환된 후 버퍼가 해제됩니다.
비차단 이 호출이 비차단되어야 하는지 여부를 지정하는 플래그입니다. 값 1은 비차단을 위한 것이고 0은 차단을 위한 것입니다.

설명

그만큼 kern_soaccept 커널 서비스는 대기 중인 첫 번째 연결을 새 소켓에 할당하여 받아들입니다.

실행 환경

그만큼 kern_soaccept 커널 서비스는 프로세스 환경에서 호출될 수 있습니다.

struct mbuf *name = NULL;
ksocket_t   so;
ksocket_t   aso;
struct sockaddr_in laddr;
int		     rc;		
rc = kern_socreate(AF_INET, &so, SOCK_STREAM, IPPROTO_TCP);
if (rc != 0 )  		 
{ 		 		 
      return(-1); 		 
}		   		 
bzero(&laddr, sizeof(struct sockaddr_in)); 		 
laddr.sin_family = AF_INET; 		 
laddr.sin_port = 12345; 		 
laddr.sin_len = sizeof(struct sockaddr_in); 		 
laddr.sin_addr.s_addr = inet_addr("9.3.108.208"); 		 
rc = kern_sobind(so, (struct sockaddr *)&laddr); 		
if (rc != 0 )  		 
{ 		 		 
     return(-1); 		 
}		   		 
rc = kern_solisten(so, 5); 		 
if (rc != 0 )  		 
{ 		 		 
     return(-1); 		 
}		   		 
rc = kern_soaccept(so, &aso, &name, 0); 		 
if (rc != 0 )  		 
{ 		 		 
     return(-1); 		  		 
}		  		 
m_freem(name); /* Caller needs to free the mbuf after kern_soaccept */

리턴 값

항목 설명
0 성공 시
>0 오류

0이 아닌 반환 값은/usr/include/sys/errno.h 파일.