멀티 쓰레드 기반의 채팅 프로그램 이름 문성영 이름 김현진 학번 2010151035 이름 장용하 이름 차희진 분석설계서.

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
김태원 심재일 김상래 강신택. 김태원 심재일 김상래 강신택 인터넷 통신망의 정보를 제공하는 서비스 인터넷의 자원 및 정보는 NIC가 관리 IP주소 또는 도메인으로 정보 검색 이용자 및 통신망 관한 정보를 제공.
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 11장 프로세스간 통신 인공지능실험실 석사 2학기 이희재
Ch.07-5 xml-rpc 사용하기 김상엽.
Android Wi-Fi Manual (Guest용)
Network Lab. Young-Chul Hwang
Outlook 에서 POP3 설정 방법.
PHP입문 Izayoi 김조흔.
소켓 모델 주소 지정 in_addr_t inet_addr(const char *ip_address) 연결 지향 모델 (TCP)
웹 서버 동작 HTTP 클라이언트가 서버와 대화하는 방법과 데이터를 서버에서 클라이언트로 전송 하는 방법을 정의한 프로토콜
08. 디바이스 드라이버의 읽기와 쓰기 김진홍
제 14장 Multicast & Broadcast
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
인공지능실험실 석사 2학기 이희재 TCP/IP Socket Programming… 제 7장 소켓 연결의 우아한 종료 인공지능실험실 석사 2학기 이희재
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
4-1장. MySQL 제13장.
AP 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
8장. 원격지 시스템 관리하기.
네트워크 프로그래밍 Yang-Sae Moon Department of Computer Science
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 24. 파일 입출력.
FTP 프로그램 채계화 박재은 박수민.
제 19 장 TFTP 19.1 메시지 19.2 연결 19.3 데이터 전송 19.4 UTP 포트 19.5 TFTP 예제
Chapter 06. UDP 서버/클라이언트.
인공지능실험실 박사 1학기 장성만 TCP/IP Socket Programming… 9장 소켓의 다양한 옵션 인공지능실험실 박사 1학기 장성만
TCP/IP 응용 프로그램에 적용 가능한 다양한 소켓 옵션을 이해하고 활용한다.
NJM Messenger 박상원 박연호.
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
프로젝트 발표 순서 12/7(수), 팀 별 15분 발표순서 PPT (팀 별 이름, 구현 내용, 결과-그래프 포함) 각 기법당
13장 고급 입출력 함수 박사 4학기 최 성자.
TCP/IP Socket Programming…
Network Security WireShark를 활용한 프로토콜 분석 I.
멀티 쓰레드 기반의 채팅 프로그램 문성영 김현진 학번 이름 장용하 차희진 연구제안서.
RMI Messenger 지도 : 김정배 교수님 조봉진.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
USN(Ubiquitous Sensor Network)
Nessus 4 설치 정보보호응용 조용준.
Internet 데이터 전송 목표: 인터넷의 개요 및 기본 내용을 살펴보고 VB에서의 데이터 전송 프로그래밍에 대하여 학습한다. 주요내용 인터넷의 개요 인터넷 데이터 전송 인터넷 프로그래밍 Winsock Client Server 프로그래밍.
PC에 설치된 엔드포인트 클라이언트 프로그램을 클릭하여 프로그램 상자를 엽니다
Network Programming - 최종보고서 -
MAIL CLIENT 김창우 윤성훈 이경재.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
자바로 만든 채팅 프로그램 임경진 조주경 지도교수님 : 이광세 교수님.
채팅프로그램 Good Day클럽 나윤영 신윤정 김시한.
CHAP 21. 전화, SMS, 주소록.
I.D.P(Image Download Program)
프로젝트 제안서 -TCP/IP를 이용한 메신저 구현-
웹(WWW).
“웹과 모바일을 연동한 평가 간편 시스템” vol
STS 에서 웹 서버 설치 방법.
Chapter 04. TCP 서버/클라이언트.
모바일(폰)메일 서비스 정흠수 최동훈.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
MIDP 네트워크 프로그래밍 ps lab 김윤경.
다자간 채팅프로그램 김형도 허영민
채팅 및 파일전송 프로그램 권 경 곤 김 창 년.
JSP Programming with a Workbook
06. 디바이스의 등록과 해제 김진홍
Network Lab. Young-Chul Hwang
Completion Port기반의 채팅프로그램
숙제 작성 및 제출 과정 김진하 2008/03/14.
1. SNMP Setting IP 설정 NetAgent Mini 카드에 제공된 CD의 Netility 프로그램을 설치하여 프로그램을 실행시킨다. Netility 프로그램을 실행하면 네트워크에 있는 SNMP 카드를 찾게 됩니다. “Configure”를 선택하면 IP 설정.
M.B.TEAM 중간 발표 (5.18) 이 제걸 백 인호.
중간 결과 보고 ( Server & Client )
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

멀티 쓰레드 기반의 채팅 프로그램 이름 문성영 이름 김현진 학번 2010151035 이름 장용하 이름 차희진 분석설계서

차 례 1 2 3 4 5 6 7 8 9 연 구 개 요 시스템 구성도 기능 분석 기능 설계도 시험절차서 업 무 분담 차 례 1 연 구 개 요 2 시스템 구성도 3 기능 분석 4 기능 설계도 5 시험절차서 6 업 무 분담 7 문제점 및 해결방안 8 수행일정 9 필요기술 및 참고문헌

네트워크 프로그래밍을 이해하고 응용력을 높임 1. 연구 개요 수업시간에 학습한 내용을 바탕으로 네트워크 프로그래밍을 이해하고 응용력을 높임 멀티쓰레드를 이해하고 구현함에 있어 문제점을 파악하고 보완함 C언어를 바탕으로 유닉스 환경에서 채팅 및 파일전송을 구현

2. 시스템 구성도 Server 데 데 이 이 터 터 전송 수신 TCP소켓 이용 1.클라이언트 소켓 번호 2.클라이언트 소켓개수 3.클라이언트 ID Server 데 이 터 전송 데 이 터 수신 TCP소켓 이용

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 : (송신 쓰레드 역할) (명령어들 정보가 있는)메뉴 호출을 위한 명령어 파일전송을 위한 명령어 프로그램 종료를 위한 명령어

4. 기능설계도(또는 시나리오) 다중 접속지원 기능 D A T Server client client [mutex_lock] rcv thread D A T snd client thread rcv snd [mutex_lock] [mutex_unlock] [pthread_create] [pthread_detach] [pthread_create] [pthread_detach]

sprintf(“”,"%s %s", name, msg); 4. 기능설계도(또는 시나리오) - BUF_SIZE (통일) - char msg[BUF_SIZE]; 채팅 기능 Server client rcv B u f e r thread B U F R snd B u f e r client scanf() thread rcv B u f e r snd printf() sprintf(“”,"%s %s", name, msg); Write(), Read()

4. 기능설계도(또는 시나리오) 파일송신 기능 Client : 파일 보낼 때(송신 쓰레드 역할) FILE Server - fopen(, “바이너리모드"); - fread() client write(sock, “파일 전송“) rcv thread B U F R snd B u f e r 명령어로 구동 thread FILE write(sock, “파일 전송 신호“) : 서버는 파일 수신준비함

4. 기능설계도(또는 시나리오) 파일수신 기능 Client : 파일 수신할 때(수신 쓰레드 역할) FILE Server write(sock, “파일 전송“) Server - fopen(, “바이너리모드"); - fwrite() client rcv thread B U F R snd B u f e r write(sock, “파일 수신 신호“) : 클라이언트는 파일 수신준비함 thread FILE

4. 기능설계도(또는 시나리오) 사용자의 편리를 위한 명령어 제공 기능 Client : (송신 쓰레드 역할) 명령어 목록 /menu : 명령어 목록을 출력합니다. /sendfile : 파일을 전송합니다. /q : 프로그램을 종료합니다. / … : …… / ………… client rcv snd 명령어 입력

클라이언트들의 정보는 접속시 생성, 종료시 소멸되며 4. 기타 설계에 적용할 몇가지 read(), write() 함수 사용시 보내고 받는 배열의 사이즈는 전부다 통일한다. 채팅할 때, 발신자의 ID와 채팅 내용을 하나의 배열로 통합하여 서버로 보낸다. 클라이언트들의 정보는 접속시 생성, 종료시 소멸되며 서버쪽 쓰레드에서 다루도록 한다.

5. 예비 시험 절차서 명령어 목록이 잘 뜨는지 해당 명령어를 입력해본다. 채팅을 해본다. (채팅 메시지를 서버에 보냄) : 아이디와 메시지가 함께 오는지 확인. 3. 파일전송을 해본다. (타 클라이언트에 실존하는 파일을 보냄) 4. 전송한 파일을 열어본다. (unix의 cat 명령어 사용) : 제대로 파일전송이 되었는지 확인. 5. 종료 명령어가 잘 작동하는지 시험한다.

6. 업 무 분 담 총 감독 및 일정관리 - 문성영 문 서 작 업 - 차희진 자 료 조 사 - 김현진 프로젝트 매니저 6. 업 무 분 담 총 감독 및 일정관리 - 문성영 문 서 작 업 - 차희진 자 료 조 사 - 김현진 프로젝트 매니저 - 장용하 서버 구현 - 김현진 클라이언트 구현 - 문성영, 차희진

read() write() 함수간 실행순서 문제 7. 예상되는 문제점, 해결모색 read() write() 함수간 실행순서 문제 예상된 write() Read() -> fwrite() B u f e r FILE 예상되지않은 write()

8. 수행 일정 현 시점

9. 필요사항 및 참고문헌 Text https://freelec.co.kr/online/lec_chapter.asp?UID=70 윤성우의 열혈 TCP/IP소켓 프로그래밍 유닉스 에서의 TCP 서버 파일입출력 멀티쓰레드 기반의 서버 http://ko.wikipedia.org/wiki 위키백과의 TCP/IP 멀티쓰레드 관련 정보