🧼C, C++/자체제작 프로그램및 배포

codeSock 헤더파일 배포 <1.0> C++

Mawile 2020. 10. 9.
728x90

시작하기 전 이 헤더 파일은

Windows10 운영체제를 사용, IDE는 DevCpp를 사용,

언어는 C++11을 사용했음을 알려드립니다


안녕하세요!

이번에는 저가 소켓을 쉽게 만들도록 도와주는

C++ 기반의 소켓 헤더를 만들게 되었습니다

우선 현재는 TCP 쪽은 돼있지만 UDP 쪽은 안돼 있습니다

헤더 파일 버전을 높일수록 새로운 기능도 계속 만들어갈 겁니다!

그러면 바로 사용설명을 해드리겠습니다!


<< 사용설명서 >>

전체 함수

먼저 천천히 설명드리겠습니다.

저는 이번에 TCP 프로토콜로 만들면서

단일 클라이언트와 다중 클라이언트를 둘다만들었습니다

 

 

client() - 단일 클라이언트 연결 함수

파라미터는 각각

(아이피 주소, 포트, 묵시적 연결 시도)

묵시적 연결 시도는 true로 하면 서버에 접속이 될 때까지 접속을 합니다

false일 경우 타임 오버될 경우 그냥 통신을 종료합니다

client_m() - 다중 클라이언트 연결 함수

(위와 같습니다 다른 점이라고 한다면

다중 클라이언트와 연결되는 서버와 호환성을 맞추기 위해

따로 만든 겁니다)

server() - 단일 서버 연결 함수

파라미터는 (포트)입니다!

server_m() - 다중 클라이언트 서버 연결 함수

파라미터는(포트, 최대 수용 가능한 클라이언트 수)입니다!

close() - 소켓 종료 함수입니다!

소켓이 종료됩니다!

sample_thread_server() - 멀 티쓰 레딩 도우미용 함수

딱히 따라오는 인자는 없고 server 만들고 바로 밑에 써준다면

서버가 알아서 정보를 가져와서 예시용 다중 클라이언트 채팅 서버를 만듭니다

(다중 클라이언트 서버용입니다.)

sample_thread_client() - 멀 티쓰 레딩 도우미용 함수

이 녀석도 client생성 위치 바로 밑에다가 두면 되고요, 예도 다중 클라이언트용입니다.

drecv(), dsend() - 단일 클라이언트 혹은 서버 소켓 버퍼 송수신 함수

이 녀석들은 파라미터가 하나밖에 없습니다.

그냥 char*자료형 하나입니다. 각각

보내고 싶은 것과 소켓 버퍼로부터 받아 올 정보를 담을 공간을 넣으면 됩니다.

사이즈마저도 다 자동으로 계산해줘서 진짜 하나만 적으시면 돼요 ㅋㅋ

리턴 값은 각각 받아 온 데이터의 양, 보낸 데이터의 양입니다.

drecv_m() - 다중 클라이언트 버퍼 수신 함수

이 녀석은 종류가 두 가지입니다.

첫 번째는 파라미터가 (소켓 버퍼로부터 받아 올 데이터를 담을 변수)

로, 클라이언트에서 쓰시면 되겠고요!

두 번째는 파라미터가 (소켓 버퍼로부터 받아 올 데이터를 담을 변수,

다중 클라이언트 중 내가 정보를 받아 올 특정 클라이언트 번호)

로, 서버에서 쓰시면 될 것 같습니다!

dsend_m() - 다중 클라이언트 버퍼 송신 함수

이 녀석도 종류가 두 가지입니다.

첫 번째는 파라미터가 (소켓 버퍼로 보낼 데이터를 담은 변수)

로, 클라이언트에서 쓰시면 되겠고요!

두 번째는 파라미터가 (소켓 버퍼로 보낼 데이터를 담은 변수,

다중 클라이언트 중 내가 정보를 보낼 특정 클라이언트 번호)

로, 서버에서 쓰시면 될 것 같습니다!

get_client_number() - 다중 클라이언트 번호 반환 함수

이 녀석은 다중 클라이언트 - 클라이언트로 할 때

필요한데요.

딱히 인자는 없고, 반환 값이 있는데

반환 값은 현재 내가 속해있는 서버의

여러 클라이언트들 중 나의 클라이언트 번호를 반환합니다!

clear_socket_buffer() - 소켓 버퍼 비우기 함수

만약에 소켓 버퍼 안에 데이터가 쌓였다!

하면 이거 써주시면 다 비워집니다.

인자 값도 없고 그냥 써주시면

함수 쪽에서 자동으로 청소해줍니다!

change_packet_size() - 패킷 크기 설정 함수

저가 설정해놓은 기본 패킷 값은 1024인데 서버나 클라이언트 시작 함수 바로

밑에다가 이 함수를 적어주시면 원하시는 패킷 크기로 서버랑 클라이언트 데이터를 받아 올 수 있습니다!

파라미터는 (패킷 크기(int형))입니다!

SIZE

패킷 사이즈를 담은 변수입니다!

이름 공간 선언 >> " decode "


<<   테스트 사진   >>

 


<<   예시 코드(서버)   >>

#include "codeSock.hpp"

int main(){
	decode::tcp tcp;
	tcp.server_m(4444,10);
	tcp.change_packet_size(2048);
	
	char buf[decode::SIZE]={0},msg[decode::SIZE]={0};
	tcp.sample_thread_server();
	
	while(1){
		cin >> buf;
		for(int i=0;i<10;i++) tcp.dsend_m(buf,i);
	}
	
	tcp.close();
}

<<   예시 코드(클라이언트)   >>

#include "codeSock.hpp"

int main(){
	decode::tcp tcp;
	tcp.client_m("127.0.0.1",4444,true);
	tcp.change_packet_size(2048);
	
	char buf[decode::SIZE]={0},msg[decode::SIZE]={0};
	tcp.sample_thread_client();
	
	while(1){
		cin>> msg;
		tcp.dsend_m(msg);
	}
	
	tcp.close();
}

<<<   추가할 것   >>>

udp프로토콜 소켓 추가

tcp다중 클라이언트 아이피랑 포트 관리 함수 추가

디테일 및 그 외 생각나는 거 추가


파일은 하단에 깃허브링크로 올려놨고

다음에는 더 많은 기능을 겸비하고 돌아오겠습니다..!

감사합니다!


<<< 다운로드 >>>

 

DRAGONPROCESS/codeSock.h

Contribute to DRAGONPROCESS/codeSock.h development by creating an account on GitHub.

github.com

 

728x90

댓글