비 블로킹 소켓은 fcntl() 메서드를 호출하고 O_NONBLOCK 플래그를 해당 소켓과 연결하는 소켓입니다. 아무도 정상적인 TCP_IP 소켓을 비 블로킹 소켓으로 변환하는 데 필요한 다른 것을 말해 줄 수 있습니까?비 블로킹 소켓
Windows 서버에서 비 차단 소켓을 잘 작동 시키려면 어떤 문제가 발생할 수 있습니까? 리눅스에 대한
비 블로킹 소켓은 fcntl() 메서드를 호출하고 O_NONBLOCK 플래그를 해당 소켓과 연결하는 소켓입니다. 아무도 정상적인 TCP_IP 소켓을 비 블로킹 소켓으로 변환하는 데 필요한 다른 것을 말해 줄 수 있습니까?비 블로킹 소켓
Windows 서버에서 비 차단 소켓을 잘 작동 시키려면 어떤 문제가 발생할 수 있습니까? 리눅스에 대한
예 초기화는 다음과 같이 보일 수 있습니다 :
int flags;
s = socket(PF_INET, SOCK_STREAM, IPPROTO_IP) // ret 5
setsockopt(s, SOL_TCP, TCP_NODELAY, [1], 4)
setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, [1], 4)
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, [1], 4)
flags = fcntl(s,F_GETFL,0);
assert(flags != -1);
fcntl(s, F_SETFL, flags | O_NONBLOCK);
connect(s, {sa_family=AF_INET, sin_port=htons(5001), sin_addr=inet_addr("192.168.0.68")}, 16)
기본 백서 태양에서 : 창에
당신은 비 차단 네트워킹을 얻을 수 중복 된 IO 소켓을 사용합니다.
리눅스에Look here and in MSDN how to write code with OVERLAPPED structures
사용의 epoll().
solaris socket().
준비가되지 않았 으면 소켓을 읽거나 쓰는 것에 유의하십시오. (선택 - 출력) EAGAIN 오류가 나타날 수 있습니다.
위대한 교차 플랫폼 라이브러리 (그러나 C++ 및 새로운 C++ 표준 후보)는 boost :: asio입니다.
네이티브 시스템 비동기 메서드를 사용합니다.
C에서 이것을 수행 할 수있는 방법이 있습니까? Windows 또는 Linux 서버에서주의해야 할 사항은 무엇입니까? –
소리가 너무 숙제와 비슷합니다. 두 번째 질문은, 두 가지 다른 종류의 초등 OS 프로그래밍을 필요로하는 실행 가능한 프로젝트를 만들 수 없다는 것입니다. –
실제로는 온라인 환경에서 들어오는 트래픽을 기다리지 않고 사용하기위한 것입니다. –