카테고리 없음

[Socket] 간단한 TCP Socket Server 테스트

SDeveloper 2021. 6. 27. 17:10
반응형

간단한 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());
		}
	}
}
반응형