검색어 입력폼

C언어 소켓 프로그래밍 채팅 프로그램 (서버와 클라이언트)

저작시기 2014.03 |등록일 2014.07.05 | 최종수정일 2016.02.03 파일확장자압축파일 (zip) | 가격 8,000원

소개글

C언어 소켓 프로그래밍 채팅 프로그램 (서버와 클라이언트) 입니다.
비주얼스튜디오 2012에서 바로 컴파일 되어 사용할 수 있습니다.
생소한 만큼 주석 다는것에 신경을 많이 썼습니다.

컴파일 환경 : 비주얼스튜디오 2012
포함내용
1. 서버 프로그램 C언어 소스
2. 클라이언트 프로그램 C언어 소스
3. 실행설명서 설명서

비주얼 스튜디오 소켓프로그래밍 세팅
winsock API를 사용하기 위해서는 "ws2_32.lib"를 포함해야합니다.
메뉴에서 "Project"-> Property -> Linker -> Input -> Additional dependency,
에서, "ws2_32.lib"추가합니다.

컴파일 실행환경

비주얼스튜디오 2012

본문내용

서버실행
서버실행을 하기 위해서는 파일명과 포트번호를 적습니다.
# server 8000


클라이언트 실행
클라이언트를 실행하기 위해서는 파일명과 접속할 서버의 IP 서버의 포트 그리고 대화명을 입력합니다.
# client 127.0.0.1 8000 david


실행과정 설명 (코드에 주석하였습니다.)
1. 서버
서버에 대한 실행과정을 살펴보면 다음과 갈은 과정으로 실행됩니다.
간단히 실행순서를 보면
socket() - bind() - listen() - accept() - close - closesocket()
이때 클라이언트의 연결 요청 크기를 5:5 채팅 이상의 사람수로 채팅이 가능하게 하기 위해서 넉넉히 MAX_CLIENT를 256이라고 크기를 잡았습니다.
if(listen(hServSock, 10)==SOCKET_ERROR)
쓰레드가 존재하므로, 서로의 값을 Mutual Exclusion 하기 위해 Mutext를 생성하여 임계영역을 설정합니다.
쓰레드는 다음의 형태로 생성할 수 있습니다.
hThread=(HANDLE)_beginthreadex(NULL, 0, HandleClnt, (void*)&hClntSock, 0, NULL);
위에서 hClntSock이라는 것은, Client의 Socket을 의미합니다.

2. 클라이언트
클라이언트의 실행순서는 다음과 갈습니다.
socket() - connect() -> 쓰레드(송 수신과 관련) 실행 -> 종료
connect()전에 서버의 Ip와 Port를 할당합니다. 그리고 송 수신은 쓰레드로 설정하여 보내는 메시지와 받는 메시지를
비동기적으로 송수신 합니다.

압축파일 내 파일목록

Code/assignment2/assignment2.vcxproj
Code/assignment2/assignment2.vcxproj.filters
Code/assignment2/assignment2.vcxproj.user
Code/assignment2/client.c
Code/assignment2/server.c
Code/assignment2.sln
Code/Debug/client.exe
Code/Debug/server.exe
readme.txt.txt
ScreenShot/client.png
ScreenShot/server.png
다운로드 맨위로