
socket_set_block 함수는 socket의 블록 모드를 설정하는 함수입니다. 블록 모드가 켜져 있으면 socket은 데이터를 읽거나 쓸 때까지 블록되게 됩니다.
이 함수는 O_NONBLOCK 플래그를 사용하여 블록 모드를 설정합니다. O_NONBLOCK 플래그를 사용하면 socket이 블록되지 않고, 데이터를 읽거나 쓸 때 오류가 발생하면 EAGAIN 오류를 반환합니다.
예를 들어, 다음 코드는 O_NONBLOCK 플래그를 사용하여 블록 모드를 설정한 후, 소켓을 사용할 때 블록되지 않습니다.
#hostingforum.kr
c
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
perror("socket");
exit(1);
}
// O_NONBLOCK 플래그를 사용하여 블록 모드를 설정
int flags = fcntl(sock, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(sock, F_SETFL, flags);
이 예에서, O_NONBLOCK 플래그를 사용하여 블록 모드를 설정한 후, 소켓을 사용할 때 블록되지 않습니다. 소켓이 블록되지 않으면, 데이터를 읽거나 쓸 때 오류가 발생하면 EAGAIN 오류를 반환합니다.
socket_set_block 함수는 실제로 socket_set_nonblock 함수와 동일합니다. 두 함수 모두 O_NONBLOCK 플래그를 사용하여 블록 모드를 설정합니다.
따라서, socket_set_block 함수는 socket의 블록 모드를 설정할 때, O_NONBLOCK 플래그를 사용하여 블록 모드를 설정합니다. 이 플래그를 사용하면 소켓이 블록되지 않고, 데이터를 읽거나 쓸 때 오류가 발생하면 EAGAIN 오류를 반환합니다.
2025-06-12 18:07