
socket_set_nonblock 함수를 사용하여 비동기 통신을 구현할 때, socket이 읽기/쓰기 가능한지 확인하는 방법은 다음과 같습니다.
1. select 함수를 사용하여 socket의 읽기/쓰기 가능 여부를 확인할 수 있습니다. select 함수는 지정한 시간 내에 읽기/쓰기 가능한 소켓이 있는지 확인합니다.
#hostingforum.kr
c
#include
fd_set read_fds, write_fds;
struct timeval tv;
FD_ZERO(&read_fds);
FD_ZERO(&write_fds);
FD_SET(sock, &read_fds);
FD_SET(sock, &write_fds);
tv.tv_sec = 0;
tv.tv_usec = 0;
select(sock + 1, &read_fds, &write_fds, NULL, &tv);
2. poll 함수를 사용하여 socket의 읽기/쓰기 가능 여부를 확인할 수 있습니다. poll 함수는 지정한 시간 내에 읽기/쓰기 가능한 소켓이 있는지 확인합니다.
#hostingforum.kr
c
#include
struct pollfd pfd;
pfd.fd = sock;
pfd.events = POLLIN | POLLOUT;
poll(&pfd, 1, 0);
3. epoll 함수를 사용하여 socket의 읽기/쓰기 가능 여부를 확인할 수 있습니다. epoll 함수는 지정한 시간 내에 읽기/쓰기 가능한 소켓이 있는지 확인합니다.
#hostingforum.kr
c
#include
struct epoll_event event;
int epoll_fd;
event.events = EPOLLIN | EPOLLOUT;
event.data.fd = sock;
epoll_ctl(epoll_fd, EPOLL_CTL_ADD, sock, &event);
epoll_wait(epoll_fd, &event, 1, 0);
이러한 방법 중 하나를 사용하여 socket이 읽기/쓰기 가능한지 확인할 수 있습니다.
2025-04-28 14:06