2012-10-26 7 views
0

ALL, Windows에서 실행되는 비 블로킹 소켓 연결의 간단한 예제를 찾고 있습니다. Google에 시도했지만 모든 샘플은 * nix (POSIX) 또는 Windows의 차단 소켓 용입니다.비 차단 소켓 클라이언트 연결

msdn을 살펴보면 소켓을 비 차단으로 만들고 connect()를 실행하는 것이 쉽지만 소켓을 다시 넣으려면 준비가 필요합니다.

그래서 모든 것은 내가 연결될 블로킹 (blocking)이없는 소켓에서 뭔가를 필요로합니다. 읽기 및 쓰기 작업은 차단 소켓에서 수행해야합니다.

비 차단 소켓의 이유는 연결 시간 제한이 필요하며 비 차단 소켓 이외의 다른 방법이 없기 때문입니다. 아니면 거기에 있습니까?

감사합니다.

+0

그게 유일한 방법은 아닙니다. 다른 스레드에서'connect' 연산을 실행할 수도 있습니다. 그렇다면 기다릴 수도 있고 기다리지 않을 수도 있습니다. –

+0

@DavidSchwartz, 좋은 해결책이지만 나에게는 그렇지 않다. ;-) 나는 각각의 장치가 동시에 자체 스레드에 연결될 수 있도록 서로 다른 장치를 연결하려고합니다. 연결하기위한 스레드를 생성하면 코드를 보게 될 사람은 누구나 나를 잃을 것입니다. 그리고 나는 나 자신을 잃을지도 모른다. 게다가 프로젝트 대상 OS는 Linux입니다 (어쩌면 QNX - 실시간). Winidows는 데모 용입니다. 고맙습니다. – Igor

+0

어쨌든 연결이 자체 쓰레드에있게된다면 왜 그 쓰레드가 연결 작업을 수행하지 않는 것이 좋을까요? –

답변

0

ACEsocket wrapper facade을 사용하고 Linux 지식을 완전히 적용하십시오.

+0

답해 주셔서 감사합니다. 불행히도 추가 라이브러리없이 기본 솔루션을 사용하는 것을 선호합니다. 게다가 그것은 호환 라이센스가 없을 수도 있습니다. – Igor

+0

@Igor - 그냥 다운로드하여 Windows에서 소켓 IO를 래핑하는 방법을 반드시 확인하십시오. – bobah