지도 교수님 : 이 상 훈 교수님 학 과 : 컴퓨터 응용 과학부 학 번 : 이 름 : 김 대 현 자바 채팅 프로그램 2002 년 졸업 프로젝트
동 기 목표 및 개발일정 개발툴 자바 소켓 전 체 구 성 도 구 축 주 요 채 팅 창 느 낀 점 순 서 순서
네트워크에 평소에 관심 일상 생활에서 많이 접하는 채팅에 대해 사용자가 아닌 개발자로서 개 발해보고 싶었다. 자바라는 언어가 네트워크에 강점 주제 선정 동기
월 2002 년 3-4 월 2002 년 5 월 2002 년 6-7 월 2002 년 8 월 2002 년 9-10 월 1 단계 2 단계 3 단계 기초 다지기 계획 및 코딩 마무리 하기 목표 및 수행일정 자바언어에 대한 공부 SCJP 및 졸작 주제 선정 채팅 분석간단한 채팅 구현 서버 및 클라이언트 구현 연동 및 발표준비 자바 프로그래밍의 이해 네트워크의 꽃 – 채팅의 이해
개발 언어 : Java jdk1.3 개발툴 : Jcreator 2.0 Pro 자바의소켓 ? 상호 통신을 위해 사용되는 일시적인 객체 통신을 하기 위해 사용되는 TCP 계층 소켓 & 포트 : 하부 네트워크에 신경 쓰지 않고 통신하 기 위한 소프트웨어적 메커니즘 두개의 프로그램 사이에 통신을 위한 채널 형성 양방향 통신이 이루어짐 서버 : 자신의 포트 번호로 요청 대기 => 요청 확인 => 해당 서비스 수행 개발툴 및 자바의 이해
로 그 인로 그 인새로운 아이디 대 기 실대 기 실 Room 1 Room 2 Room 3 Room 1 Room 2 Room 3 중복 체크 아이디 등록 종료 채팅 흐름도 상호 대화
서버 소켓 생성 ServerSocket socket=new ServerSocket(5000) Port 5000 InputStreamReader in=server.getInpputStream(); OutputStreamReader out=server.getOutputStram() Socket server=socket.accept() Socket client= new Socket( “ ”,5000) InputStreamReader in=client.getInputStream(); OutputStreamReader out=client.getOutputStream(); 스트림 변환 In Out 스트림 변환 Out In 데이터 교환 소스 전체 개요
messageCheck(String inputmessage) 서버에서 처리 후 클라이언트로 날려줌 클라이언트 => 서버 로그인 대화방리스트 갱신 대화방 개설 대화방 참여 귓속말 비번 변경 방제 변경 강 퇴강 퇴 대화 클라이언트 <= 서버 로그인 허용 5000 다른 아이디를 넣으시오 5001 대화방 리스트 갱신 허용 5002 대화방 참여 허용 5004 귓속말 허용 5018 비번 변경 허용 5016 방제 변경 허용 5017 강퇴 허용 5008 대화 5014 checkMessage(String msg) 클라이언트에서 처리후 서버로 날려줌 public void sendMessage(Client client,String message){ client.output.writeUTF(messa ge); client.output.flush(); 프로토콜 규약 public void sendServer(Stringmessage){ dos.writeUTF(message); dos.flush(); 서켓 연결 이후 프로토콜에 따라 다음과 같이 통신한다
main() 부분 setServerSocket() - 서버소켓 생성 -while 문 - 무한정으로 클라이언트의 접속을 기다린다 클라이언트에 대응되는 서버 소켓 생성 클라이언트 정보를 벡터에 저장 각각의 run() 함수 실행 run() 함수 내에 while 문 - 무한정 클라이언트의 메시지를 받고 뿌린다 Client class ChatServer 구성도 ChatServer class
main() -frame 생성 -public ChatClient() 생성자 함수호출 -pack(),setvisible(true) public ChatClinet() 설명 Panel 의 레이아웃으로 FlowLayout 으로 변경 TextField 변경 불가 -setEditable(false) 액션 이벤트 등록 버퍼 io 생성 run() 함수가 구현된 ClientThread class 생성 및 start() 함수 호출 run() 함수의 내용 While 문을 통해 무한 반복 하면서 서버로 부터 들어온 Message 를 통해 TextArea 에 뿌린다 ChatClient 구성도
주요 채팅 창 로그인 창 채팅창 대기실
결과 및 질문 채팅 시현 프로젝트 수행하며 느끼고 배운 점들 프로그래밍에 대한 전반적 이해 채팅의 원리 이해 할 수 있다는 자신감 개선점 DB 구축을 통한 회원정보 저장 DB 를 통한 채팅 관리자 추가 사용자 편의 기능 추가 더 나아가 소켓이 아닌 RMI 로 구현 현재 상태 SCJP 자격증 ㈜쓰리아이 인포테크 입사 질문