mfc 소켓프로그래밍 예제

다음은 man 페이지의 설명입니다: “수신 대기 중인 연결 큐에서 첫 번째 연결 요청을 추출하여 sockfd를 만들고, 새 연결된 소켓을 만들고, 해당 소켓을 참조하는 새 파일 설명기를 반환합니다. 새로 만든 소켓이 수신 대기 상태에 있지 않습니다. 원래 소켓 양말은이 호출의 영향을받지 않습니다”. 이제 소켓을 사용하여 데이터를 보내고 읽을 수 있습니다. 그러나 알림(이벤트)이 어떻게 작동하는지 먼저 알아두어야 하며, 그렇지 않으면 새 데이터를 읽을 수 있는 시기나 어떤 이유로 소켓의 연결이 끊어지는지 알 수 없습니다. 이 클래스는 Windows 소켓 API를 캡슐화합니다. CAsyncSocket은 네트워크 프로그래밍을 알고 소켓 API에 직접 프로그래밍의 유연성을 원하지만 네트워크 이벤트 알림을 위한 콜백 기능의 편리함을 원하는 프로그래머를 위한 것입니다. C++에서 사용하기 위해 개체 지향 양식의 소켓을 패키징하는 것 이외에 이 클래스가 제공하는 유일한 추가 추상화는 특정 소켓 관련 Windows 메시지를 콜백으로 변환하는 것입니다. 자세한 내용은 Windows 소켓: 소켓 알림을 참조하십시오. * 호출 블록, 비 차단 소켓 대 차단 소켓으로 이동합니다. 처음에 설명했듯이 이러한 함수는 주 응용 프로그램 스레드가 아닌 다른 스레드에서 호출됩니다. 창 스레드에서 무언가를 실행해야 하는 경우 CMySocket 예제에서 볼 수 있듯이 PostMessage를 사용하여 메시지를 보내야 합니다.

MFC 개체에는 이 필수가 됩니다. 스레드 간에 전달되는 경우 작동하지 않으며 정의된 동일한 스레드에서 이러한 개체를 사용해야 합니다. 소켓이 있으면 해당 소켓을 로컬 컴퓨터의 포트와 연결해야 할 수 있습니다. 포트 번호는 커널에서 들어오는 패킷을 특정 프로세스의 소켓 설명자와 일치시키기 위해 사용됩니다. 서버는 로컬 호스트의 주소와 연결을 수신대기할 포트를 통해 bind()를 호출합니다. 그것은 파일 설명자 (이전에 설립 된 소켓), 바인딩할 주소의 세부 사항을 포함 하는 구조에 대 한 포인터(의 주소), INADDR_ANY 값은 일반적으로 이것에 사용 되는, 그리고 주소 구조의 길이 걸립니다. 사용해야 하는 특정 구조는 프로토콜에 따라 달라지므로 포인터에 의해 전달됩니다. 따라서 이 bind() 호출은 소켓을 포트의 현재 IP 주소에 바인딩하고, portno Returns 0은 성공 시 0, 오류시 -1을 바인딩합니다. *버퍼에서 소켓 fd로 n바이트를 보냅니다. 전송된 바이트 수 또는 오류시 -1을 반환합니다.

반환 값은 소켓이 성공적으로 생성되는 경우 TRUE, 오류가 발생하면 FALSE입니다. 당신은 항상 함수와 마지막 오류 코드를 쿼리 할 수 있습니다 : 소켓을 초기화하려면 함수 AfxSocketInit()를 호출해야합니다.

This entry was posted by in Uncategorized.