-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchapter4.txt
More file actions
68 lines (54 loc) · 3.21 KB
/
chapter4.txt
File metadata and controls
68 lines (54 loc) · 3.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
4장 : 채팅 프로그램을 만들자
4-1. 채팅 프로그램의 프로세스
채팅이 진행되는 전체적인 프로세스를 먼저 살펴보자.
(ChatProc.png 참고)
서버와 클라이언트의 동작은 서로 다르다.
클라이언트는 서버의 IP 주소를 입력해서 대기중인 서버에 접속한다.
(ChatCS.png 참고)
채팅 프로그램은 새로운 방을 만들지, 기존의 방에 들어갈지 선택해야 한다.
새로운 서버를 생성한다면 채팅 화면으로 넘어가도록 한다.
기존 방에 들어가는 클라이언트는 대기중인 단말의 IP주소를 입력하여 접속한다.
[대화 과정을 생각해보자]
채팅은 상대가 송신한 메세지를 기다리지 않고 자신의 메세지를 보낼 수 있어야 한다.
채팅 프로그램은 채팅방에서 나갈때까지 메세지의 송신과 수신이 반복된다.
Send와 Receive 함수를 반복하여 처리한다.
(MessageProc.png 참고)
채팅 프로그램은 상대방의 메세지가 도착했는지 확인한다.
다음 상대에게 보낼 메세지가 입력되면 메세지를 송신한다. (자신이 입력한 메세지도 표시한다.)
송수신이 끝난다면 상대방이 나갔는지 확인한다.
이후 나갔다면 접속을 종료하고 타이틀 화면으로 돌아간다.
즉, 채팅 프로그램은 기본적인 송수신을 반복하는 것만으로도 작성할 수 있는 간단한 App이다.
4.2 채팅 프로그램을 만들어 보자.
[시작부터 접속까지]
채팅 프로그램을 구성하는 스크립트는 다음과 같다.
- 채팅 모듈 : Chat.cs(채팅 프로그램)
- 통신 모듈 : TransportTCP.cs(통신 라이브러리)
PacketQueue.cs(송수신할 데이터를 보존하는 큐)
채팅 프로그램 시작 시, 채팅방 만들기 혹은 채팅방 들어가기를 선택한다.
선택 버튼을 누르면 채팅이 시작된다.
채팅 부분을 관리하는 Chat 클래스는 Update 함수 안에서 상태에 따라 호출할 함수를 전환한다.
먼저 채팅방을 선택하는 SelectHostTypeGUI를 살펴보자.
──────────────────────────────────────────────────
채팅방 선택
──────────────────────────────────────────────────
void SelectHostTypeGUI(){
if(GUI.Button(new Rect(20, 40, 150, 20), "채팅방 만들기:)){
m_trnasport.StartServer(m_port);
m_state = ChatState.CHATTING;
m_isServer = true;
}
Rect TextRect = new Rect(20, 100, 200, 20);
m_hostAddress = GUI.TextField(textRect, m_hostAddress);
if(GUI.Button(new Rect(20, 70, 150, 20), "채팅방 들어가기)){
bool ret = m_trnasport.Connect(m_hostAddress, m_port);
if(ret){
m_state = ChatState.CHATTING;
}
else{
m_state = ChatState.ERROR;
}
}
}
──────────────────────────────────────────────────
SelectHostTypeGUI 함수는 서버와 클라이언트 어느쪽을 선택하는가에 따라 접속 방법을 바꾼다.
[채팅 메세지 통신 프로그램]