반응형
간단한 TCP Socket Server를 구현해보자
- 해당 프로그램은 Connect시, Server와 Client가 라인별로 데이터를 주고 받을 수 있도록 구성되어있다.
1. Server Class를 생성한다.
2. 9876포트를 바인딩하는 ServerSocket을 생성한다.
ServerSocket server = new ServerSocket(9876)
3. Listen 상태로 대기한다.
Socket socket = server.accept();
4. Client에서 송신한 Inputstream을 읽어드린다.
InputStream is = socket.getInputStream();
5. line단위를 String으로 변환한다.
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
6. Client에게 응답을 전달한다.
OutputStream os = socket.getOutputStream();
os.write("hello".getBytes("UTF-8"));
7. Telnet을 통해 Test해본다.
cmd> telnet 127.0.0.1:9876
package itji.example.socket.server;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
new MyServer().start();
}
private void start() {
System.out.println("Server start");
try {
// 1. Server Socket 생성, port 바인딩
ServerSocket server = new ServerSocket(9876);
// 2. Connent Listen 상태로 대기
Socket socket = server.accept();
while (true) {
// 3. Client에서 송신한 데이터 읽기
InputStream is = socket.getInputStream();
// 4. line별 데이터 수신하기
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = br.readLine();
System.out.println(line);
// 6. 응답 메세지 전송
OutputStream os = socket.getOutputStream();
os.write("OK! \n".getBytes("UTF-8"));
os.flush();
}
} catch (Exception e) {
System.out.println("Server excpetion: " + e.getMessage());
}
}
}
반응형