🧼C, C++/네트워크

IOCP 에코 서버-클라이언트 C++ (CompletionQueue)

Mawile 2021. 9. 8.
728x90

오랜만에 네트워크관련글을 쓰게되었습니다.

사실 반년전에는 네트워크관련글을 열심히올리다가, 대부분 알고리즘&게임엔진에 대한 글을 많이쓰게되었습니다.

그리고, 현재..

TCP/IP IOCP 에코서버&클라이언트에 대한 글을 쓰게되네요.

 

 

✨ 다운로드

https://github.com/orangelie/IOCP-Echo

 

GitHub - orangelie/IOCP-Echo: WSA IOCP Tcp/ip Echo Server on C++17

WSA IOCP Tcp/ip Echo Server on C++17. Contribute to orangelie/IOCP-Echo development by creating an account on GitHub.

github.com

 

 

 

🔮 클라이언트를 특정할 수 있습니다.

/**
		@struct PER_CompletionSock
*/
typedef struct {
	SOCKET hSocket; //< SocketHandle
	SOCKADDR_IN hAddr; //< SocketAddrIn
	unsigned int hNumberOfClient; //< ClientNumber
} PER_CompletionSock, * LPPER_CompletionSock;

 

위 코드블럭은 CompletionQueue로 전달되는 소켓정보에 관한 구조체입니다.

"hNumberOfClient"로 콜백함수내에서 해당클라이언트가 할당받은 번호가 몇번인지 확인할 수 있습니다.

 

 

 

 

🔮 사용가능한 레퍼런스

/**
		@param (Server-IPAddress, Sever-Port)
*/
mawile::IOCPError mawile::IOCPClient::Initialize(const char*, int);


/**
		@param (Continuous connection until connection to the server is reached)
*/
mawile::IOCPError mawile::IOCPClient::Connect(bool);


/**
		@param (Client Acceptance Callback Function, Server-Port)
*/
mawile::IOCPError mawile::IOCPServer::Initialize(_beginthreadex_proc_type, int);


/**
		@param (Client infinite listenability)
*/
mawile::IOCPError mawile::IOCPServer::Listen(bool);

위와 같이 각각 클라이언트와 서버에서 사용될 수 있는 레퍼런스들입니다.

 

 

 

 

🔮 정확한 오류지점을 얻고싶다면, 다음함수를 사용하세요.

mawile::IOCPErrorResult(mawile::IOCPError);

 

 

 

 

🔮 프로그램 테스트사진은 다음내용에서 확인가능합니다.

https://github.com/Mawi1e/IOCP-Echo#pictures

 

GitHub - Mawi1e/IOCP-Echo: WSA IOCP Tcp/ip Echo Server on C++17

WSA IOCP Tcp/ip Echo Server on C++17. Contribute to Mawi1e/IOCP-Echo development by creating an account on GitHub.

github.com

 

 

 

감사합니다!

 


728x90

댓글