Showing
7 changed files
with
163 additions
and
17 deletions
1 | + | ||
2 | +// TCP로 통신할 때는 정의를 유효하게 하여 주십시오. | ||
3 | +#define USE_TRANSPORT_TCP | ||
4 | + | ||
5 | +using UnityEngine; | ||
6 | +using System.Collections; | ||
7 | +using System.Net; | ||
8 | + | ||
9 | + | ||
10 | +public class LibrarySample : MonoBehaviour { | ||
11 | + | ||
12 | + // 통신 모듈. | ||
13 | + public GameObject transportTcpPrefab; | ||
14 | + public GameObject transportUdpPrefab; | ||
15 | + | ||
16 | + // 통신용 변수. | ||
17 | +#if USE_TRANSPORT_TCP | ||
18 | + TransportTCP m_transport = null; | ||
19 | +#else | ||
20 | + TransportUDP m_transport = null; | ||
21 | +#endif | ||
22 | + | ||
23 | + // 접속할 IP 주소. | ||
24 | + private string m_strings = ""; | ||
25 | + | ||
26 | + // 접속할 포트 번호. | ||
27 | + private const int m_port = 50765; | ||
28 | + | ||
29 | + private const int m_mtu = 1400; | ||
30 | + | ||
31 | + private bool isSelected = false; | ||
32 | + | ||
33 | + | ||
34 | + // Use this for initialization | ||
35 | + void Start () | ||
36 | + { | ||
37 | + // Transport 클래스의 컴포넌트를 가져온다. | ||
38 | +#if USE_TRANSPORT_TCP | ||
39 | + GameObject obj = GameObject.Instantiate(transportTcpPrefab) as GameObject; | ||
40 | + m_transport = obj.GetComponent<TransportTCP>(); | ||
41 | +#else | ||
42 | + GameObject obj = GameObject.Instantiate(transportUdpPrefab) as GameObject; | ||
43 | + m_transport = obj.GetComponent<TransportUDP>(); | ||
44 | +#endif | ||
45 | + | ||
46 | + IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName()); | ||
47 | + System.Net.IPAddress hostAddress = hostEntry.AddressList[0]; | ||
48 | + Debug.Log(hostEntry.HostName); | ||
49 | + m_strings = hostAddress.ToString(); | ||
50 | + } | ||
51 | + | ||
52 | + // Update is called once per frame | ||
53 | + void Update () | ||
54 | + { | ||
55 | + if (m_transport != null && m_transport.isConnected == true) { | ||
56 | + byte[] buffer = new byte[m_mtu]; | ||
57 | + int recvSize = m_transport.Receive(ref buffer, buffer.Length); | ||
58 | + if (recvSize > 0) { | ||
59 | + string message = System.Text.Encoding.UTF8.GetString(buffer); | ||
60 | + Debug.Log(message); | ||
61 | + } | ||
62 | + } | ||
63 | + } | ||
64 | + | ||
65 | + void OnGUI() | ||
66 | + { | ||
67 | + if (isSelected == false) { | ||
68 | + OnGUISelectHost(); | ||
69 | + } | ||
70 | + else { | ||
71 | + if (m_transport.isServer == true) { | ||
72 | + OnGUIServer(); | ||
73 | + } | ||
74 | + else { | ||
75 | + OnGUIClient(); | ||
76 | + } | ||
77 | + } | ||
78 | + } | ||
79 | + | ||
80 | + void OnGUISelectHost() | ||
81 | + { | ||
82 | +#if USE_TRANSPORT_TCP | ||
83 | + if (GUI.Button (new Rect (20,40, 150,20), "Launch server.")) { | ||
84 | +#else | ||
85 | + if (GUI.Button (new Rect (20,40, 150,20), "Launch Listener.")) { | ||
86 | +#endif | ||
87 | + m_transport.StartServer(m_port, 1); | ||
88 | + isSelected = true; | ||
89 | + } | ||
90 | + | ||
91 | + // 클라이언트를 선택했을 때 접속할 서버 주소를 입력합니다. | ||
92 | + m_strings = GUI.TextField(new Rect(20, 100, 200, 20), m_strings); | ||
93 | +#if USE_TRANSPORT_TCP | ||
94 | + if (GUI.Button (new Rect (20,70,150,20), "Connect to server")) { | ||
95 | +#else | ||
96 | + if (GUI.Button (new Rect (20,70,150,20), "Connect to terminal")) { | ||
97 | +#endif | ||
98 | + m_transport.Connect(m_strings, m_port); | ||
99 | + isSelected = true; | ||
100 | + m_strings = ""; | ||
101 | + } | ||
102 | + } | ||
103 | + | ||
104 | + void OnGUIServer() | ||
105 | + { | ||
106 | +#if USE_TRANSPORT_TCP | ||
107 | + if (GUI.Button (new Rect (20,60, 150,20), "Stop server")) { | ||
108 | +#else | ||
109 | + if (GUI.Button (new Rect (20,60, 150,20), "Stop Listener")) { | ||
110 | +#endif | ||
111 | + m_transport.StopServer(); | ||
112 | + isSelected = false; | ||
113 | + m_strings = ""; | ||
114 | + } | ||
115 | + } | ||
116 | + | ||
117 | + | ||
118 | + void OnGUIClient() | ||
119 | + { | ||
120 | + // 클라이언트를 선택했을 때 접속할 서버의 주소를 입력합니다. | ||
121 | + if (GUI.Button (new Rect (20,70,150,20), "Send message")) { | ||
122 | + byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Hellow, this is client."); | ||
123 | + m_transport.Send(buffer, buffer.Length); | ||
124 | + } | ||
125 | + | ||
126 | + if (GUI.Button (new Rect (20,100, 150,20), "Disconnect")) { | ||
127 | + m_transport.Disconnect(); | ||
128 | + isSelected = false; | ||
129 | + m_strings = ""; | ||
130 | + } | ||
131 | + } | ||
132 | + | ||
133 | +} | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | +fileFormatVersion: 2 | ||
2 | +guid: aa61c0cf4489b43888605561c5b33086 | ||
3 | +timeCreated: 1517159051 | ||
4 | +licenseType: Pro | ||
5 | +MonoImporter: | ||
6 | + externalObjects: {} | ||
7 | + serializedVersion: 2 | ||
8 | + defaultReferences: [] | ||
9 | + executionOrder: 0 | ||
10 | + icon: {instanceID: 0} | ||
11 | + userData: | ||
12 | + assetBundleName: | ||
13 | + assetBundleVariant: |
... | @@ -20,7 +20,7 @@ MonoBehaviour: | ... | @@ -20,7 +20,7 @@ MonoBehaviour: |
20 | m_ShowMode: 4 | 20 | m_ShowMode: 4 |
21 | m_Title: | 21 | m_Title: |
22 | m_RootView: {fileID: 6} | 22 | m_RootView: {fileID: 6} |
23 | - m_MinSize: {x: 950, y: 300} | 23 | + m_MinSize: {x: 950, y: 521} |
24 | m_MaxSize: {x: 10000, y: 10000} | 24 | m_MaxSize: {x: 10000, y: 10000} |
25 | --- !u!114 &2 | 25 | --- !u!114 &2 |
26 | MonoBehaviour: | 26 | MonoBehaviour: |
... | @@ -40,8 +40,8 @@ MonoBehaviour: | ... | @@ -40,8 +40,8 @@ MonoBehaviour: |
40 | y: 657 | 40 | y: 657 |
41 | width: 567 | 41 | width: 567 |
42 | height: 328 | 42 | height: 328 |
43 | - m_MinSize: {x: 102, y: 121} | 43 | + m_MinSize: {x: 100, y: 100} |
44 | - m_MaxSize: {x: 4002, y: 4021} | 44 | + m_MaxSize: {x: 4000, y: 4000} |
45 | m_ActualView: {fileID: 15} | 45 | m_ActualView: {fileID: 15} |
46 | m_Panes: | 46 | m_Panes: |
47 | - {fileID: 15} | 47 | - {fileID: 15} |
... | @@ -70,7 +70,7 @@ MonoBehaviour: | ... | @@ -70,7 +70,7 @@ MonoBehaviour: |
70 | m_MinSize: {x: 277, y: 192} | 70 | m_MinSize: {x: 277, y: 192} |
71 | m_MaxSize: {x: 4002, y: 8042} | 71 | m_MaxSize: {x: 4002, y: 8042} |
72 | vertical: 1 | 72 | vertical: 1 |
73 | - controlID: 147 | 73 | + controlID: 134 |
74 | --- !u!114 &4 | 74 | --- !u!114 &4 |
75 | MonoBehaviour: | 75 | MonoBehaviour: |
76 | m_ObjectHideFlags: 52 | 76 | m_ObjectHideFlags: 52 |
... | @@ -116,8 +116,8 @@ MonoBehaviour: | ... | @@ -116,8 +116,8 @@ MonoBehaviour: |
116 | y: 0 | 116 | y: 0 |
117 | width: 445 | 117 | width: 445 |
118 | height: 985 | 118 | height: 985 |
119 | - m_MinSize: {x: 234, y: 492} | 119 | + m_MinSize: {x: 234, y: 471} |
120 | - m_MaxSize: {x: 10004, y: 14042} | 120 | + m_MaxSize: {x: 10004, y: 14021} |
121 | vertical: 1 | 121 | vertical: 1 |
122 | controlID: 94 | 122 | controlID: 94 |
123 | --- !u!114 &6 | 123 | --- !u!114 &6 |
... | @@ -185,10 +185,10 @@ MonoBehaviour: | ... | @@ -185,10 +185,10 @@ MonoBehaviour: |
185 | y: 30 | 185 | y: 30 |
186 | width: 1920 | 186 | width: 1920 |
187 | height: 985 | 187 | height: 985 |
188 | - m_MinSize: {x: 713, y: 492} | 188 | + m_MinSize: {x: 713, y: 471} |
189 | - m_MaxSize: {x: 18008, y: 14042} | 189 | + m_MaxSize: {x: 18008, y: 14021} |
190 | vertical: 0 | 190 | vertical: 0 |
191 | - controlID: 93 | 191 | + controlID: 26 |
192 | --- !u!114 &9 | 192 | --- !u!114 &9 |
193 | MonoBehaviour: | 193 | MonoBehaviour: |
194 | m_ObjectHideFlags: 52 | 194 | m_ObjectHideFlags: 52 |
... | @@ -251,8 +251,8 @@ MonoBehaviour: | ... | @@ -251,8 +251,8 @@ MonoBehaviour: |
251 | y: 0 | 251 | y: 0 |
252 | width: 445 | 252 | width: 445 |
253 | height: 500 | 253 | height: 500 |
254 | - m_MinSize: {x: 204, y: 221} | 254 | + m_MinSize: {x: 200, y: 200} |
255 | - m_MaxSize: {x: 4004, y: 4021} | 255 | + m_MaxSize: {x: 4000, y: 4000} |
256 | m_ActualView: {fileID: 16} | 256 | m_ActualView: {fileID: 16} |
257 | m_Panes: | 257 | m_Panes: |
258 | - {fileID: 16} | 258 | - {fileID: 16} |
... | @@ -391,7 +391,7 @@ MonoBehaviour: | ... | @@ -391,7 +391,7 @@ MonoBehaviour: |
391 | scrollPos: {x: 0, y: 0} | 391 | scrollPos: {x: 0, y: 0} |
392 | m_SelectedIDs: | 392 | m_SelectedIDs: |
393 | m_LastClickedID: 0 | 393 | m_LastClickedID: 0 |
394 | - m_ExpandedIDs: 92fbffff00000000 | 394 | + m_ExpandedIDs: 9efbffff00000000 |
395 | m_RenameOverlay: | 395 | m_RenameOverlay: |
396 | m_UserAcceptedRename: 0 | 396 | m_UserAcceptedRename: 0 |
397 | m_Name: | 397 | m_Name: |
... | @@ -498,9 +498,9 @@ MonoBehaviour: | ... | @@ -498,9 +498,9 @@ MonoBehaviour: |
498 | m_IsLocked: 0 | 498 | m_IsLocked: 0 |
499 | m_FolderTreeState: | 499 | m_FolderTreeState: |
500 | scrollPos: {x: 0, y: 0} | 500 | scrollPos: {x: 0, y: 0} |
501 | - m_SelectedIDs: a0270000 | 501 | + m_SelectedIDs: 6e270000 |
502 | - m_LastClickedID: 10144 | 502 | + m_LastClickedID: 10094 |
503 | - m_ExpandedIDs: 000000009227000000ca9a3bffffff7f | 503 | + m_ExpandedIDs: 000000006027000000ca9a3bffffff7f |
504 | m_RenameOverlay: | 504 | m_RenameOverlay: |
505 | m_UserAcceptedRename: 0 | 505 | m_UserAcceptedRename: 0 |
506 | m_Name: | 506 | m_Name: |
... | @@ -528,7 +528,7 @@ MonoBehaviour: | ... | @@ -528,7 +528,7 @@ MonoBehaviour: |
528 | scrollPos: {x: 0, y: 0} | 528 | scrollPos: {x: 0, y: 0} |
529 | m_SelectedIDs: | 529 | m_SelectedIDs: |
530 | m_LastClickedID: 0 | 530 | m_LastClickedID: 0 |
531 | - m_ExpandedIDs: 0000000092270000 | 531 | + m_ExpandedIDs: 0000000060270000 |
532 | m_RenameOverlay: | 532 | m_RenameOverlay: |
533 | m_UserAcceptedRename: 0 | 533 | m_UserAcceptedRename: 0 |
534 | m_Name: | 534 | m_Name: | ... | ... |
No preview for this file type
No preview for this file type
No preview for this file type
-
Please register or login to post a comment