-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServer.java
More file actions
87 lines (73 loc) · 2.57 KB
/
Copy pathServer.java
File metadata and controls
87 lines (73 loc) · 2.57 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.javaex.network.v4;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
// 서버 소켓을 생성
ServerSocket serverSocket = null;
try {
// 바인드
serverSocket = new ServerSocket();
InetSocketAddress local = new InetSocketAddress("127.0.0.1", 10000);
serverSocket.bind(local);
// 시작 메세지 출력
System.out.println("<서버 시작>");
System.out.println("[연결을 기다립니다.]");
// 연결을 기다려 봅니다: 대기 상태
Socket socket = serverSocket.accept();
// 클라이언트 접속시 처리
InetSocketAddress socketAddress = (InetSocketAddress)socket.getRemoteSocketAddress();
System.out.println("[클라이언트가 연결되었습니다.]");
System.out.println(socketAddress.getAddress() + ":" + socketAddress.getPort());
// 클라이언트로부터 메시지를 받아봅시다
// 스트림을 열겠습니다.
InputStream is = socket.getInputStream();
Reader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
// Echo Back을 위한 스트림을 열겠습니다.
OutputStream os = socket.getOutputStream();
Writer osw = new OutputStreamWriter(os, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
// 메시지를 읽고 Echo Back
String msg;
while(true) {
msg = br.readLine();
if(msg == null) {
System.out.println("[접속이 종료되었습니다.]");
break;
}
System.out.println("Message:" + msg);
// Echo Back
System.out.println("Echo Back:" + msg);
bw.write("[Echo]:" + msg);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
// 후처리
System.out.println("=============");
System.out.println("<서버 종료>");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}