다음을 통해 공유


Windows 소켓: 작업 순서

이 문서는 나란히 서버 소켓과 클라이언트 소켓에 대 한 작업을 순서를 대로 보여줍니다.소켓을 사용 하기 때문에 CArchive 개체는 반드시 스트림 소켓.

스트림 소켓 통신을 위한 작업 순서

만드는 시점의 CSocketFile 개체, 다음 순서는 (몇 가지 매개 변수 차이 와) 정확 하 게 모두에 대해 CAsyncSocketCSocket.해당 지점에서 시퀀스 엄격히입니다 CSocket.다음 표에서 클라이언트와 서버 간의 통신을 설정 하는 작업을 순서를 대로 보여 줍니다.

서버와 클라이언트 간의 통신 설정

서버

클라이언트

// construct a socket

CSocket sockSrvr;

// construct a socket

CSocket sockClient;

// create the SOCKET

sockSrvr.Create(nPort);1,2

// create the SOCKET

sockClient.Create( );2

// start listening

sockSrvr.Listen( );

 

 

// seek a connection

sockClient.Connect(strAddr, nPort);3,4

// construct a new, empty socket

CSocket sockRecv;

// accept connection

sockSrvr.Accept( sockRecv ); 5

 

// construct file object

CSocketFile file(&sockRecv);

// construct file object

CSocketFile file(&sockClient);

// construct an archive

CArchive arIn(&file, CArchive::load);

또는

CArchive arOut(&file,CArchive::store);

– 또는 – 

// construct an archive

CArchive arIn(&file, CArchive::load);

또는

CArchive arOut(&file,CArchive::store);

 – 또는 – 

// use the archive to pass data:

arIn >> dwValue;

또는

arOut << dwValue;6

// use the archive to pass data:

arIn >> dwValue;

또는

arOut << dwValue;6

1.위치 nPort 포트 번호입니다.참조 Windows 소켓: 포트 및 소켓 주소 포트에 대 한 자세한 내용은.

2.항상 서버 클라이언트가 연결할 수 있도록 포트를 지정 해야 합니다.만들기 호출도 가끔 주소를 지정 합니다.클라이언트 쪽에서 사용 가능한 포트를 사용 하도록 MFC에 요청 하는 기본 매개 변수를 사용 합니다.

3.위치 nPort 포트 번호 및 strAddr 인터넷 프로토콜 (IP) 주소나 컴퓨터 주소입니다.

4.컴퓨터 주소 폼을 여러 걸릴 수 있습니다: "ftp.microsoft.com 형식", "microsoft.com"."점 수" 양식 "127.54.67.32" IP 주소를 사용 합니다.연결 함수를 (이 수는 네트워크에 있는 유효한 컴퓨터 있는지 확인 하지 않지만) 주소는 점으로 구분 된 형식 인지 여부를 확인 합니다.그렇지 않으면 연결 는 컴퓨터 이름입니다. 다른 폼 중 하나를 가정 합니다.

5.호출 하면 수락 서버 쪽에서 새 소켓 개체에 대 한 참조를 전달 합니다.이 개체는 먼저 생성 해야 하지만 호출 하지 않습니다 만들기 에 대 한.사실을 염두 하는 경우이 소켓 개체가 범위에서 연결이 닫힙니다 라우트됩니다.MFC 연결 되는 새 개체에는 소켓 처리 합니다.볼 수 있듯이, 스택 또는 힙에 소켓을 생성할 수 있습니다.

6.범위를 벗어나면 아카이브 및 소켓 파일 닫힙니다.소켓 개체의 소멸자도 호출 하는 닫기 소켓 개체가 범위에서 벗어나서 되거나 삭제 될 때 개체의 멤버 함수입니다.

시퀀스에 대 한 참고 사항

앞의 표에 표시 된 호출 순서는 스트림 소켓용입니다.비연결 데이터 그램 소켓을 사용할 필요가 없는 있는 CAsyncSocket::Connect, 수신, 및 수락 호출 (선택적으로 사용할 수 있지만 연결).대신 클래스를 사용 하는 경우 CAsyncSocket, 데이터 그램 소켓 사용은 CAsyncSocket::SendToReceiveFrom 멤버 함수입니다.(사용 하는 경우 연결 는 데이터 그램 소켓을 사용 하면 보내기수신.) 때문에 CArchive 작동 하지 데이터 그램에 사용 하지 않는 CSocket 아카이브 데이터 그램 소켓 경우에.

CSocketFile 의 모든 옵션을 지원 하지 않습니다 CFile의 기능입니다. CFile같은 멤버 Seek, 어떤 소켓 통신을 위한 의미가 사용할 수 없습니다.이 인해 일부 기본 MFC Serialize 함수는 호환 되지 않습니다 CSocketFile.이 중 특히 마찬가지입니다 있는 CEditView 클래스.Serialize 하려고 해야 CEditView 통해 데이터는 CArchive 개체를 연결 하는 CSocketFile 개체를 사용 하 여 CEditView::SerializeRaw. 사용 CEditView::Serialize 대신 (않습니다 문서화).SerializeRaw 함수 같은 함수에 파일 개체를 필요로 Seek, 해당 CSocketFile 를 지원 하지 않습니다.

자세한 내용은 다음을 참조하십시오.

참고 항목

참조

CSocket 클래스

CAsyncSocket::Create

CAsyncSocket::Close

개념

Mfc에서 Windows 소켓