Coding & Programming/Network(TCP, IP, UDP) 7

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #3/3

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #3/3 - 서버 편 안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 지난번 클라이언트 설명과 소스코드를 포스팅한데 이어 이번에는 1:N 파일 수신 서버 프로그램에 대한 설명과 소스코드입니다. 서버/클라이언트에 대한 전반적인 개념, 실행 절차, 주요 기능 등은 아래 링크를 참고하세요. ⓐ Winsock 멀티스레드 1:N 대용량 파일 전송 서버/클라이언트 구현하기 - 프로그램 주요 기능, 개념, 절차 ⓑ Winsock 멀티스레드 1:N 대용량 파일 전송 클라이언트 구현하기(클라이언트 소스코드) 서버는 N개의 클라이언트로부터 파일을 수신해야 하기 때문에 1개의 파일..

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #2/3

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송/수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #2/3 안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 지난번에는 서버, 클라이언트에 대해 구상한 프로그램 개념도, 통신 규약, 서버/클라이언트 통신 절차에 대해 포스팅하였습니다. 이번에는 구상한 내용을 토대로 구현한 클라이언트 프로그램에 대한 설명과 소스코드를 포스팅합니다. 클라이언트는 전송하고자 하는 파일의 파일 크기와 데이터를 읽은 뒤 "파일명&파일 데이터" 형태로 패킷 데이터를 우선 구성합니다. 그런 다음 소켓을 초기하고 서버에 연결한 후 패킷 헤더(PACKET_HEADER)를 구성하여 서버에 패킷 헤더 5바이트를 먼저 전송합니다. typedef st..

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #1/3

[C언어/C++] Winsock 멀티스레드 1:N 대용량 파일 전송(송/수신) 서버/클라이언트 구현하기(TCP/IP Windows socket) #1/3 안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 이번 포스팅은 윈속(Winsock)을 이용한 파일 전송에 대한 내용입니다. 파일 전송 기능은 모바일, 데스크톱 환경에서의 카카오톡, 텔레그램 등 각종 메신저 프로그램에서는 이제 필수가 된 기능으로 네트워크 프로그래밍을 스터디하기에는 좋은 주제라고 생각합니다. 그리고 이번 자료는 지난번 1:N 채팅 프로그램을 스터디한 후 네트워크 프로그래밍에 더 익숙해지기 위한 내용이라 할 수 있습니다. 본론으로 들어가서, 프로그램의 기본적인 개념은 다음 그림과 같이 클라이언트는 파일을 전송하고 서버는 N개의 클라이언트들..

[C/C++] 윈도우 소켓(Winsock) 1:N 채팅/통신 프로그램 구현하기 #4:: TCP 클라이언트 구현(소스코드)

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 먼저 클라이언트 기능을 구현해 보았습니다. 클라이언트는 기본적으로 서버에 접속하여 채팅 메시지를 송·수신하는 기능을 포함하며 서버와 같이 여러 클라이언트들의 소켓을 관리할 필요가 없어 서버에 비해 비교적 소스코드가 간단합니다. ■ 클라이언트 주요 기능 - 소켓 초기화 및 서버 접속 - 소켓으로 부터 채팅 메시지와 서비스 종료 메시지를 수신하기 위한 FD_READ, FD_CLOSE 이벤트 등록 - 소켓을 이용한 채팅 메시지 송신 및 수신 FD_READ, FD_CLOSE 등의 네트워크 이벤트가 궁금하시면 WSAEventSelect functions(winsock2.h) MS 자료를 참고하세요. main() 함수 내 코드를 위주로 설명을 하면, 먼저 프로그램의..

[C/C++] 윈도우 소켓(Winsock) 1:N 채팅/통신 프로그램 구현하기 #3:: TCP 서버 구현하기(소스코드)

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 이번에는 채팅 서버 기능을 구현해 보았습니다. 1:N 서버는 기본적으로 N개의 클라이언트(사용자)의 접속이 필요하므로 N개의 소켓을 관리하고 각 클라이언트들로부터 보내진 메시지를 다수의 클라이언트로 재전송하는 기능을 포함합니다. ■ 서버 주요 기능 - 소켓 초기화 및 클라이언트 접속 대기 - 소켓으로부터 클라이언트 접속, 채팅 메시지와 서비스 종료 메시지를 수신하기 위한 FD_ACCEPT, FD_READ, FD_CLOSE 이벤트를 등록 - 소켓을 이용한 채팅 메시지 수신과 전달 - 클라이언트 연결/접속 종료 상태와 공지사항 전달 다수의 클라이언트들은 소켓, 이벤트, 별명, IP주소 정보가 포함된 SOCK_INFO 구조체를 통해 관리되며 SOCK_INFO ..

[C/C++] 윈도우 소켓(Winsock) 1:N 채팅/통신 프로그램 구현하기 #2:: 프로그램 구조 및 Winsock 라이브러리 설정

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 1:N 채팅 프로그램은 기본적으로 TCP 프로토콜을 기반으로 1개의 서버가 N개의 클라이언트(사용자)를 지원합니다. 아래 개념도에서와 같이 각 클라이언트는 서버를 통해 서로 채팅 메시지를 주고받을 수 있어요. ■ 채팅 프로그램 기능 다음은 채팅 프로그램의 기본 기능입니다. - 클라이언트 접속/종료 알림 기능 : 새로운 클라이언트가 접속하거나 접속을 종료하면 모든 클라이언트에게 알림 - 1:N 채팅 지원 기능 : 서버가 채팅 메시지를 모든 클라이언트에게 전달하여 1:N 채팅을 지원 - 서버 공지 기능 : 서버가 공지 메시지를 모든 클라이언트에게 전달 - 서버 종료 알림 기능 : 서버가 종료되면 모든 클라이언트에게 종료 메시지를 전달 Visual Studio..

[C/C++] 윈도우 소켓(Winsock) 1:N 채팅/통신 프로그램 구현하기#1:: 소개

안녕하세요 JollyTree입니다 (•̀ᴗ•́)و 인터넷이 일반화되어 있는 요즘은 카카오톡, 웹브라우저 등 대부분의 프로그램들이 네트워크 통신 기능을 기본적으로 제공하고 있습니다. 그래서 이번에는 윈속(Winsock)을 이용한 네트워크 통신 프로그램 구현 방법에 대해 스터디한 글을 짧은 연재로 기록합니다. 윈도우, 리눅스 등의 운영체제에서 네트워크 통신 프로그램 개발할 수 있는데요. 기본적으로 소켓(socket) 라이브러리를 통해 프로그램을 개발할 수 있습니다. sqrt(), pow(), abs(), fabs() 등과 같은 수학 관련 라이브러리를 사용하듯이 네트워크 프로그래밍을 하려면 socket(), bind(), accept(), send(), recv() 등과 같은 소켓 관련 함수를 사용합니다. 윈..