2011-08-08 6 views
0

내 응용 프로그램은 명령 줄에서 사용자의 키보드 입력을 수신 대기하고 소켓의 데이터를 단일 루프에서 동시에 수신 대기해야합니다. 이 응용 프로그램은 현재 리눅스에서 실행되며 위의 내용은 stdin 및 network 소켓을 선택하여 fd_set 배열 목록에 추가 호출을 사용하여 쉽게 얻을 수 있습니다. 액티비티에 따라 앱은 사용자 입력 또는 소켓의 데이터를 처리 할 수 ​​있습니다.Windows 소켓 및 명령 줄 입력을 동시에 수신합니다.

이제이 응용 프로그램을 Windows로 포팅하고 Windows에 익숙하지 않습니다. Windows에서 어떻게 위와 같은 결과를 얻을 수 있습니까? 그것은 표준뿐만 아니라 소켓에서도 활동을 듣고 있습니다. 모든 포인터가 감사하겠습니다.

+0

다음과 같은 방법으로 해결할 수있었습니다. WaitForMultipleObjects() API를 사용했습니다. 이 API의 경우, STD_INPUT 콘솔 핸들에 대한 핸들을 사용하십시오. 관심있는 각 소켓에 대해 WSACreateEvent를 만들고이를 WaitForMultipleObjects() API에 전달 된 핸들 배열에 추가합니다. – sthustfo

답변

0

다음과 같은 방법으로 해결할 수있었습니다.

WaitForMultipleObjects() API를 사용했습니다. 이 API의 경우 STD_INPUT 콘솔 핸들에 대한 핸들을 사용하십시오. 그리고 관심있는 각 소켓에 대해 WSACreateEvent를 만들고이를 WaitForMultipleObjects() API에 전달 된 핸들 배열에 추가하십시오.

WaitForMultipleObjects() API가 반환하면 해당 활동이 감지 된 핸들을 찾아 그에 따라 행동 할 수 있습니다.

관련 문제