mfc 소켓 통신 예제

다음 코드는 이전에 설명한 Winsock 함수 및 구조를 사용한 서버 및 클라이언트 프로그램 예제입니다. 이 경우 클라이언트-서버 통신을 가능하게 하려면 서버 설정을(인수- 프로토콜, 포트 번호 등을 통해) 클라이언트 설정과 일치시켜야 합니다. 예를 들어 UDP 서버를 실행하도록 선택한 경우 클라이언트도 UDP 클라이언트여야 합니다. 먼저 서버 프로그램을 실행하 시고 다른 컴퓨터에서 클라이언트를 실행할 수 있습니다. 이 예제에서는 로컬 Windows Xp Pro 컴퓨터에서 인수의 기본 값을 사용하여 서버와 클라이언트를 실행했습니다. 나는 또 다른 비교를했다. 원래 예제의 소켓 및 스레딩 코드는 주석 줄, 빈 줄 및 상용구 VS6 물건(약 650줄)을 제거하는 것입니다. 내 코드에는 약 960 줄의 소켓 및 스레딩 코드가 있습니다. 수량 면에서 큰 차이는 없지만 내 코드는 실제로 작동하며 모든 프로젝트 구성에서 작동합니다. `{` 또는 `}`로 구성된 194개의 줄을 계산하지 않고, 변경되지 않은 112개의 줄 중 52개가 마법사에 의해 생성되었고 31선은 `else`, `break` 및 `return`과 같은 간단한 문장으로, 현재까지 약 30줄만 남았습니다. 버전은 완전히 손길이 닿지 않은.

추가 44 는 원래 456 라인의 의미, 단지 74/456 또는 약 16%가 실제로 재작성에 살아남은 것을 의미, 이름을 바꾸기 위해 이소모닉이었다. 그래서 나는 그것이 대부분 잘못되었다고 말할 때, 그것을 증명하는 몇 가지 숫자가 있습니다. 별도의 스레드에서 비동기 소켓에 대한 최근 뉴스 그룹이 게시되었습니다. 나는 그것이 초보자 실수와 오류의 거대한 숫자를 만든 질문을 게시 한 사람에 의해 작성된 생각, 코드의 많은 실패를 지적했다. 원래 포스터 (OP)의 후속 메시지는 코드가 기술 자료 기사 192570을 기반으로했다고 말했다. 소켓은 프로그램이 들어오는 연결을 수락하고, 나가는 연결을 만들고, 데이터를 보내고 받을 수 있도록 하는 파일과 유사한 개체입니다. 두 컴퓨터가 통신하기 전에 둘 다 소켓 개체를 만들어야 합니다. 우리는 또한 길이가 0000으로 지정된 패킷이라는 규칙을 수립했습니다. 통신 종료 표시기였으며 서버는 이러한 패킷을 받은 후 연결을 닫습니다. 자체 소켓 클래스를 파생하려면 클래스 보기로 이동하여 새 클래스를 추가하고 기본 클래스를 CAsyncSocket으로 설정합니다.

classwizard의 도움으로 아래와 같이 알림 함수를 추가합니다. 이 클래스는 Windows 소켓 API를 매우 낮은 수준으로 캡슐화합니다. CAsyncSocket은 네트워크 통신을 자세히 알고 있지만 네트워크 이벤트 알림을 위해 콜백의 편리함을 원하는 프로그래머가 사용하기 위한 것입니다. 이 가정을 기반으로 이 문서에서는 기본 지침만 제공합니다. MFC 응용 프로그램에서 여러 네트워크 프로토콜을 쉽게 처리할 수 있지만 유연성을 희생하지 않으려는 경우 CAsyncSocket을 사용하는 것이 좋습니다. 또한 클래스 CSocket의 보다 일반적인 대체 모델을 사용하는 것보다 직접 통신을 프로그래밍하여 효율성을 높일 수 있다고 생각할 수도 있습니다. 서버 소켓 이나 클라이언트 소켓 과 같은 소켓은 CConnectSoc에서 해당 소켓을 하위 클래스로 분류하고 하위 클래스는이 가상 메서드를 구현합니다. 위의 첫 번째 생성자는 스택에 CAsyncSocket 개체를 만듭니다. 두 번째 생성자는 힙에 CAsyncSocket을 만듭니다. 위의 첫 번째 호출 만들기는 기본 매개 변수를 사용하여 스트림 소켓을 만듭니다.

두 번째 Create 호출은 지정된 포트 및 주소가 있는 데이터그램 소켓을 만듭니다. (두 가지 구성 방법으로 버전 만들기 중 하나를 사용할 수 있습니다.) MFC는 두 개의 MFC 클래스에 구현된 Windows 소켓으로 네트워크 통신 프로그램을 작성하기 위한 두 가지 모델을 제공합니다.

ΚατηγορίεςΧωρίς κατηγορία