멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 2010151035 이름 장용하 차희진 연구제안서
차 례 1 2 3 4 5 6 7 8 9 10 연 구 개 요 개발시스템의 목표 시스템 개발방법 기능분석 시스템 구성도 차 례 1 연 구 개 요 2 개발시스템의 목표 3 시스템 개발방법 4 기능분석 5 시스템 구성도 6 소프트웨어 구성도 7 업무분담 8 문 제 점 및 해결 방안 9 수행일정 10 필요기술 및 참고문헌
네트워크 프로그래밍을 이해하고 응용력을 높임 1. 연구 개요 수업시간에 학습한 내용을 바탕으로 네트워크 프로그래밍을 이해하고 응용력을 높임 멀티쓰레드를 이해하고 구현함에 있어 문제점을 파악하고 보완함 C언어를 바탕으로 유닉스 환경에서 채팅 및 파일전송을 구현
2. 개발시스템의 목표 다중 접속자들 간의 채팅 기능 접속자들 간의 파일전송 기능 TCP소켓을 활용한 서버 구현 멀티 쓰레드를 이용하여 멀티프로세스의 단점을 보완
3. 시스템 개발방법 시스템 개발 방법 및 개발 환경 : 다중접속서버 구현방법, 사용 함수 : - 개발방법 : TCP 소켓 이용, 다중접속 서버/클라이언트 구현 - 개발환경 : UNIX - 개발언어 : C언어 다중접속서버 구현방법, 사용 함수 : - 멀티쓰레드 활용 - readv, writev함수 활용
3. 기능 분석 (1) 다중 접속지원 기능 1. 쓰레드 이용 Server : 클라이언트 연결요청이 있을 때마다 클라이언트를 다루기 위한 쓰레드 생성. Client : 서버에 접속시 송신 쓰레드와 수신 쓰레드 생성. (쓰레드는 전역변수를 통해 서로 정보를 주고받을 수 있음) 2. 쓰레드간 Mutex 이용 서버의 어느 한 쓰레드가 서버에 있는 전역변수에 접근할땐 다른 쓰레드의 접근을 막기위해 Mutex 이용.
3. 기능 분석 (2) 채팅 기능 Server : 클라이언트로부터 받은 메시지를 임시적으로 배열에 저장한다. 배열에 저장된 메시지를 모든 클라이언트에게 보냅니다. ( 클라이언트 핸들러 쓰레드의 역할 ) Client : 전달할 메시지를 입력하면 임시적으로 배열에 저장된다. 배열에 저장된 메시지를 서버에 보냅니다.( 송신쓰레드 역할) 서버로부터 오는 메시지를 출력 합니다.( 수신쓰레드 역할)
3. 기능 분석 (3) 파일전송 기능 Client : 파일 보낼 때(송신 쓰레드 역할) 명령어 이용, 파일 전송을 시작함. 명령어 이용, 존재하는 파일의 목록확인 가능. 파일명과 보낼 Client 이름은 명령어와 구분하여 입력. 파일전송 전, 서버에게 파일은 보낸다는 정보를 보냄. 파일은 바이너리 모드로 열고, 읽어온 데이터는 배열에 저장. 배열에 저장된 정보를 서버에 전달.
3. 기능 분석 (4) 파일전송 기능 Client : 파일 받을 때(수신 쓰레드 역할) 서버로부터 파일을 보낸다는 명령을 받음. 받을 파일의 파일명을 직접 입력함. 서버로부터 파일을 입력받아 배열에 임시 저장함. 파일을 바이너리 쓰기 모드로 열고, 임시 저장된 파일의 내용을 파일에 씀.
3. 기능 분석 (5) 파일전송 기능 Server : 파일을 보낸다는 신호를 클라이언트로부터 받음. 클라이언트에게 받은 파일 데이터를 배열에 임시 저장함. 파일을 보낸다는 신호를 해당 클라이언트에게 보냄. 배열에 저장된 데이터를 해당 클라이언트에게 보냄. 파일을 다 전송했으면, 다 전송했다는 신호를 보냄.
3. 기능 분석 (6) 사용자의 편리를 위한 명령어 제공 기능 Client : (송신 쓰레드 역할) (명령어들 정보가 있는)메뉴 호출을 위한 명령어 파일전송을 위한 명령어 프로그램 종료를 위한 명령어
5. 시스템 구성도 Server 데 이 터 전송 데 이 터 수신 TCP소켓 이용 Client Client Client 1.클라이언트 소켓 번호 2.클라이언트 소켓개수 3.클라이언트 ID Server 데 이 터 전송 데 이 터 수신 TCP소켓 이용 Client Client Client
6. 소프트웨어 구성도 서버와 클라이언트의 접속 관점 소프트웨어 - 연결확인 메시지 - 프로그램 명령어 제공 - IP, PORT, 대화명 입력
6. 소프트웨어 구성도 데이터 송수신 관점의 소프트웨어 B U F E R client Server client 서버 버퍼 내용 수신 입력버퍼 출력버퍼 B U F E R 출력버퍼 입력버퍼 클라이언트 버퍼 내용 송신 client 출력버퍼 입력버퍼 서버 버퍼 내용 수신 입력버퍼 출력버퍼 버퍼 내용은 : 입력한 데이터 혹은,파일
7. 업 무 분 담 총 감독 및 일정관리 - 문성영 문 서 작 업 - 차희진 자 료 조 사 - 김현진 프로젝트 매니저 7. 업 무 분 담 총 감독 및 일정관리 - 문성영 문 서 작 업 - 차희진 자 료 조 사 - 김현진 프로젝트 매니저 - 장용하 서버 구현 - 김현진 클라이언트 구현 - 문성영, 차희진
8. 문제점 및 해결 방안 쓰레드간의 동기화 문제 해결 방안 뮤텍스(Mutex) 기반동기화, 혹은 쓰레드간의 동기화 문제 해결 방안 뮤텍스(Mutex) 기반동기화, 혹은 세마포어(Semaphore) 기반동기화
9. 연구 수행 일정 5월 6월 최 종 데 모 팀구성, 계획서 및 제안서 작성 발 표 발 표 분석, 설계서 작성 발 표 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 6월 1 2 3 4 5 최 종 데 모 팀구성, 계획서 및 제안서 작성 발 표 발 표 분석, 설계서 작성 발 표 중 간 데 모 발 표
10. 필요사항 및 참고문헌 Text https://freelec.co.kr/online/lec_chapter.asp?UID=70 윤성우의 열혈 TCP/IP소켓 프로그래밍 유닉스 에서의 TCP 서버구현 시그널 구현 파일입출력 구현 멀티쓰레드 기반의 서버구현 http://ko.wikipedia.org/wiki 위키백과의 TCP/IP 멀티쓰레드 관련 정보