[데이터통신] 소켓프로그래밍- 네트워크 텍스트 메신저

1. [데이터통신] 소켓프로그래밍- 네트워.hwp
2. [데이터통신] 소켓프로그래밍- 네트워.pdf
[데이터통신] 소켓프로그래밍- 네트워크 텍스트 메신저
1. 프로그램 개요
비동기형 채팅프로그램을 수정하여 텍스트 기반의 간단한 메신저프로그램을 제작해보며
네트워크 프로그램에 대한 이해를 높인다.

2. 프로그램 설명
1) friends 구조체형 통신
서버와 클라이언트는 이름, ip, port, status 정보를 담고 있는 friends 구조체를 정의하여
통신에 사용한다. 구조체형을 주고받기 때문에 void형으로 자료를 주고받을 수 있는
read, write함수를 사용

2) 상태변화
클라이언트는 짧은 정수형의 입력을 통해 서버 및 다른 클라이언트에 자신의 상태를 알린다.

3) 채팅 가능
클라이언트가 채팅하고자 하는 다른 클라이언트의 이름을 입력하면 서버에 채팅을 요청하고
서버는 채팅을 요청받은 클라이언트에 채팅을 명령한다.
(요청받은 클라이언트에게 채팅의사를 묻지 않음)
채팅을 요청한 클라이언트는 fork를 만들어 자식프로세스가 udp서버가 되어 기다린다.
채팅을 요청받은 클라이언트는 서버로부터 ip, port를 받아 fork를 만들고 자식프로세스가
udp클라이언트가 되어 채팅을 요청한 클라이언트에 접속한다.
‘exit’로 채팅상태를 빠져나가며 부모프로세스는 다시 메신저로 복귀

4) 부가 설명
■ 상태값

값0123
99
상태
오프라인
온라인
자리비움
채팅중
초기값

2. 프로그램 실행화면
1) 초기 연결
서버1개, 클라이언트 3개
첫 번째 클라이언트 이름 : first
두 번째 클라이언트 이름 : second
세 번째 클라이언트 이름 : third

2) 상태 변화
현재 클라이언트의 상태
first : 온라인
second : 오프라인
third : 자리비움

FIRST

SECOND

THIRD

3) 클라이언트간 채팅
first가 서버에게 second와 채팅 요청
서버는 second채팅 명령
....