소켓 파일전송 C++ #1
시작하기 앞서서
사용한 운영체제는 Windows10이며
사용된 IDE는 DevCpp이고, 사용한 언어는 C++11입니다!
[[[ 참고자료 ]]]
소켓 기본 틀
소켓 기본틀
[[[ 서버 기본 틀 ]]] #include #include using namespace std; #define PACKET_SIZE 1024 SOCKET skt,client_sock; int main(){ WSADATA wsa; WSAStartup(MAKEWORD(2,2), &wsa); skt = socket(PF_INET,SOCK_S..
mawile.tistory.com
파일 전송 원리
[C] 파일 전송(File Transfer) - TCP
1. 구성 TCP 기반의 Socket을 이용한 파일 전송 프로그램입니다. Server Receiver 파라메터 : Client Sender 파라메터 : 다른 언어 다른 방식: https://github.com/cckr2/FileTransfer 2. Source Code(1) -..
twinw.tistory.com
이번에도 늘 그랬다시피 소켓 기본 틀은 저가 위에
참고자료로 올려둔 글에서 따올 겁니다~!
두번째참고자료를 기반으로 저방식대로
코드를 줄이고 최대한 이해가기쉽게 만들었습니다!
[[[ 서버(받는사람) ]]]
int totalNum; //전체다운받은횟수
int BufferNum=0; //현재다운받은횟수
int readBytes; //다운받은데이터의크기
long file_size; //전체파일사이즈
char buf[PACKET_SIZE]; //데이터를저장할 버퍼
FILE * fp;
fp = fopen("C:\\(경로)\\file.png", "wb"); //바이너리파일 쓰기형식으로 열기
recv(client_sock, buf, PACKET_SIZE, 0); //파일사이즈받기
file_size = atol(buf); //char->long변환
totalNum = file_size / PACKET_SIZE + 1;
//전체사이즈횟수 = 파일전체사이즈 % (1+받고있는데이터)
while(BufferNum != totalNum){ //만약 전체사이즈횟수와 다운받은횟수가같다면 루프나가기
readBytes = recv(client_sock, buf, PACKET_SIZE, 0);
//데이터와 데이터의크기 받기
BufferNum++; //1씩더하기
fwrite(buf, sizeof(char), readBytes, fp);
//데이터와 데이터의크기만큼 파일쓰기
}
fclose(fp); //파일닫기
[[[ 클라이언트(보내는사람) ]]]
int sendBytes; //파일을 읽어와서 사이즈를저장할변수
long file_size; //파일전체사이즈
char buf[PACKET_SIZE]; //데이터저장버퍼
FILE *fp;
fp = fopen("C:\\(경로)\\file.png", "rb"); //바이너리파일 읽기형식으로 열기
fseek(fp, 0, SEEK_END); //끝으로가서
file_size = ftell(fp); //사이즈재고
fseek(fp, 0, SEEK_SET); //처음으로 다시와서
snprintf(buf, sizeof(buf), "%d", file_size); //사이즈값을 buf에다가넣기
send(skt, buf, sizeof(buf), 0); //파일전체 사이즈값전송
while((sendBytes=fread(buf,sizeof(char),sizeof(buf), fp))>0) send(skt, buf, sendBytes, 0);
//파일이끝날때까지 읽고 보내고를 반복
fclose(fp); //파일닫기
전체소스코드는 밑에 깃허브에서 다운받으시구요~~
시연영상도 찍었습니다!
어제 강좌올렸던 리버스쉘강좌는 깜빡하고 시연영상을 못올렸는데
이번꺼는 잘 기억하고 올렸습니다 ㅎㅎ~~
[[[ 시연영상 ]]]
[[[ 다운로드 ]]]
DRAGONPROCESS/FileTransfer
Contribute to DRAGONPROCESS/FileTransfer development by creating an account on GitHub.
github.com
[[[ 다음글 ]]]
소켓 파일전송 C++ #2
개발환경 >> DevCpp 언어 >> C++11 운영체제 >> Windows10 [[[ 지난글 ]]] 소켓 파일전송 C++ #1 시작하기 앞서서 사용한 운영체제는 Windows10이며 사용된 IDE는 DevCpp이고, 사용한 언어는 C++11입니다! [[[..
mawile.tistory.com
'🧼C, C++ > 네트워크' 카테고리의 다른 글
다중 클라이언트 C++ TCP #1 (0) | 2020.10.14 |
---|---|
소켓 기본 틀 #2 (1) | 2020.10.13 |
소켓 기본 틀 #1 (0) | 2020.10.05 |
리버스 쉘 Reverse Shell C++ (0) | 2020.10.05 |
실시간 채팅 프로그램 C++ TCP (6) | 2020.10.01 |
댓글