codeSock 헤더파일 배포 <1.0> C++
시작하기 전 이 헤더 파일은
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다중 클라이언트 아이피랑 포트 관리 함수 추가
디테일 및 그 외 생각나는 거 추가
파일은 하단에 깃허브링크로 올려놨고
다음에는 더 많은 기능을 겸비하고 돌아오겠습니다..!
감사합니다!
<<< 다운로드 >>>
'🧼C, C++ > 자체제작 프로그램및 배포' 카테고리의 다른 글
codeSock <v2.0> 라이브러리 배포 C++ (0) | 2020.11.12 |
---|---|
파일 자가복제 C++ #1 (0) | 2020.11.05 |
C++ memstrs 헤더파일 (0) | 2020.09.13 |
로또추첨 프로그램 (0) | 2020.09.10 |
C++ 게임 [ MonsterBeat Ver.1 ] (0) | 2020.09.04 |
댓글