-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServerThread.java
More file actions
68 lines (57 loc) · 1.86 KB
/
Copy pathServerThread.java
File metadata and controls
68 lines (57 loc) · 1.86 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
package com.javaex.network.v5;
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.InetSocketAddress;
import java.net.Socket;
public class ServerThread extends Thread {
// 필드
private Socket socket;
private String client;
//생성자
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
// 클라이언트 접속시 처리
try {
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();
} catch (IOException e) {
}
}
}