Network Programming - 최종보고서 - 팀 원 : 김 상 규, 김 종 형, 강 우 희
목 차 프로젝트 개요 팀 구성도 개발환경 프로젝트 소개 프로그램 구조 주요 함수 설명 프로젝트 일정표 Demo 참고문헌
프로젝트 개요 메신저란 TCP/IP 프로토콜을 이용하여 인터넷이 연결된 곳이라면 언제 어디서나 실시간으로 메시지를 주고받을 수 있는 프로그램을 의미 메신저의 주요기능 메시지 교환 파일 송·수신 음성채팅 화상채팅 네트워크 게임기능
팀 구성도 김상규 김종형 강우희 김상규 김종형 강우희 팀장, 기획, 프로그래밍, 자료수집 프로그래밍, 자료수집, 문서작업 프로그래밍, 자료수집, 테스트
개발환경 System Develop Tool Server : P4 Desktop PC Client : P4 Desktop PC MS Visual Studio 6.0
프로젝트 소개 Main Window ※메시지 출력부분 ※서버측 IP 입력부분 ※메시지 입력부분
프로젝트 소개 접속화면 State → Server 서버시작과 함께 클라이언트 접속 대기라는 메시지가 뜨며 클라이언트 접속을 대기하는 화면입니다. 서버를 시작하면 기본적으로 포트는 9999입니다.
프로젝트 소개 Server Client
프로젝트 소개 ※Server 대화창 ※Client 대화창
프로젝트 소개 ※게임 화면 (초기화면)
프로젝트 소개 ※게임 화면(진행중인 화면)
프로젝트 소개 ※게임 화면(종료 화면) ※Client 화면 ※Server 화면
프로그램 구조 Server socket Client socket SendMsg SendMsg RecvMsg RecvMsg bind() listen() accept() socket() connect() g_chatmsg 입력 g_chatmsg 입력 SendMsg SendMsg send() send() MSG MSG DiskplayText() RecvMsg RecvMsg DiskplayText() recv() recv() 출력 출력
프로그램 구조 ServerSock – 서버기능을 담당하며, 클라이언트가 connect()를 시도하면 send와 recv를 위한 두개의 스레드를 생성합니다. ClientSock – 클라이언트 기능을 담당하며 connect()를 시도하여 성공하면 send와 recv를 위한 두개의 스레드를 생성합니다. SendMsg – send() 부분을 담당하며, 채팅 메세지 및 게임점수를 구분하여 전송합니다. RecvMsg – recv() 부분을 담당하며, 채팅 메세지 및 게임점수를 구분하여 수신합니다. DisplayText()에서는 수신되거나 전송되어지는 메세지 또, 각종 에러 메세지 등을 대화창에 출력해 줍니다.
주요 함수 설명 struct CHATMSG { char buf[BUFSIZE+1]; } 메신저를 통한 메시지를 받기위한 구조체 HWND hWnd, hEditMain, hEditChat, hGameWnd; 윈도우, 메신저 대화창과 대화입력창, 게임용 차일드 윈도우 HANDLE hReadEvent, hWriteEvent; 스레드 동기화를 위한 이벤트 핸들 SOCKET g_sock; 소켓종료를 위한 전역소켓변수 DWORD WINAPI ServerSock(LPVOID arg); 서버 소켓을 만들어 클라이언트가 접속시 클라이언트와 통신을 할 수 있는RecvMsg, SendMsg 스레드 생성. DWORD WINAPI ClientSock(LPVOID arg); 클라이언트용 소켓생성 DWORD WINAPI SendMsg(LPVOID arg); 메시지를 보냄 send() DWORD WINAPI RecvMsg(LPVOID arg); 메시지를 받음 recv()
주요 함수 설명 BOOL CALLBACK IpAddrProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); 주소와 PORT번호를 받는 다이얼로그 프로시저 void DisplayText(char *fmt, ...); 입력받은 문자를 대화창에 출력 void CALLBACK TimerProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam); 게임시 사용되는 타이머 프로시저 void CreateChild(); 게임 화면을 차일드 윈도우로 생성
프로젝트 일정표 아이템구상 제안서 작성 자료수집 기능설계 Coding 최종 테스트 디버깅 최종 결과물 보고서 작성 5월 3일 5월 10일 5월 17일 5월 24일 5월 31일 6월 7일 6월 14일 아이템구상 제안서 작성 자료수집 기능설계 Coding 최종 테스트 디버깅 최종 결과물 보고서 작성
참고 문헌 / 사이트 메트릭스 | http://www.metrixcorp.com/ 네이버 | http://www.naver.com/ 네이트온 | http://www.nate.com/ 랭키닷컴 | http://www.rankey.com/ MSDN Library | http://www.msdn.com/ 윈도우 네트워크 프로그래밍 TCP/IP 소켓 프로 그래밍 – 김선우/한빛미디어 Windows API 정복 – 김상형/가남사