kern_soaccept 커널 서비스
용도
새 소켓에 할당하여 대기 중인 첫 번째 연결을 수락합니다.
구문
매개변수
| 항목 | 설명 |
|---|---|
| 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 파일.