LOGIN • JOININ

RayYun님의 질문 메일 중...

webmaster 2015.12.18 20:49 조회 수 : 123

RayYun님이 저번에 질의하신 내용 중 작성하셨다는 소스 부분...


그 부분 보다 쉽게 작성할 수 있는 부분이 있습니다.


보내주신 작성하셨다는 소스에 다음과 같은 소스 부분이 있었습니다.



printf("[CGCII Network TCP Auther Server]\n");

// 1) Acceptor를 생성한다.
	acceptServer = NEW<CGNet::CAcceptor<CServerSocket>>(_TEXT("Server Acceptor"));
	acceptClient = NEW<CGNet::CAcceptor<CClientSocket>>(_TEXT("Client Acceptor"));

	SOCKADDR_IN Server_Sock, Client_Sock;
		
	memset(&Server_Sock, 0, sizeof(Server_Sock));
	memset(&Client_Sock, 0, sizeof(Client_Sock));
	Server_Sock.sin_family = AF_INET;
	Client_Sock.sin_family = AF_INET;
	Server_Sock.sin_addr.s_addr = htons(INADDR_ANY);
	Client_Sock.sin_addr.s_addr = htons(INADDR_ANY);
	Server_Sock.sin_port = htons(20000);
	Client_Sock.sin_port = htons(20001);

// 2) 20000번 포트로 Listen을 시작한다.
	acceptServer->Start(Server_Sock, 0, 0);
	acceptClient->Start(Client_Sock, 0, 0);


근데 이부분에서 Acceptor를 2개 만들어 각각 20000번과 20001번 포트에 List을 하시려면 굳이 저렇게 길게 쓰시지 않으셔도 됩니다.



printf("[CGCII Network TCP Auther Server]\n");

// 1) Acceptor를 생성한다.
	acceptServer = NEW<CGNet::CAcceptor<CServerSocket>>(_TEXT("Server Acceptor"));
	acceptClient = NEW<CGNet::CAcceptor<CClientSocket>>(_TEXT("Client Acceptor"));

// 2) 20000번 포트로 Listen을 시작한다.
	acceptServer->Start(20000);
	acceptClient->Start(20001);


으로만 하시면 됩니다.


즉 Start할때 Port 번호만 지정해 주시면 됩니다.

SOCKADDR_IN의 내용을 직접 채워서 Listen을 하는 경우는 일반적으로 여러 개의 랜카드를 가졌거나 IP를 가진 경우 특정한 IP에만 Listen을 하고자 할 경우에만 사용해 주시면 됩니다. IP를 'INADDR_ANY'를 설정해서 모든 랜카드에 Listen을 할 경우 굳이 SOCKADDR_IN구조체를 선언해서 직접 작성하실 필요 없이 포트번호만 써주시면 됩니다.


그리고 MSG_CONTEXT를 사용해서 시작하실 수도 있는데 그건 좀 자세한 설명이 필요해서 추후에 좀더 작성해서 글을 올리도록 하겠습니다.


하여튼 Log관련 오류 패치 빨리 올리도록 하겠씁니다. 

감사합니다.