본문 바로가기

Spring Boot

[JAVA] TCP/IP 데이터통신 기본 서버,클라이언트

반응형

Server

import java.io.*;
import java.net.*;

class TCPServer {
    public static void main(String argv[]) throws Exception {
        ServerSocket welcomeSocket = new ServerSocket(6789);
        while (true) {
            Socket connectionSocket = welcomeSocket.accept();
            ClientThread ct = new ClientThread(connectionSocket);
            ct.start();
        }
    }
}

class ClientThread extends Thread {
    Socket connectionSocket;

    public ClientThread(Socket socket) {
        this.connectionSocket = socket;
    }

    public void run() {
        try {
            BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
            while (true) {
                String clientSentence = inFromClient.readLine();
                System.out.println("Received: " + clientSentence);
                String capitalizedSentence = clientSentence.toUpperCase() + '\n';
                outToClient.writeBytes(capitalizedSentence);
            }
        } catch (IOException e) {
            System.out.println("Connection lost.");
        }
    }
}

 

Client

import java.io.*;
import java.net.*;

class TCPClient {
    public static void main(String argv[]) throws Exception {
        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        Socket clientSocket = new Socket("localhost", 6789);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        while (true) {
            sentence = inFromUser.readLine();
            outToServer.writeBytes(sentence + '\n');
            modifiedSentence = inFromServer.readLine();
            System.out.println("FROM SERVER: " + modifiedSentence);
        }
    }
}

서버가 포트 6789에서 들어오는 클라이언트 연결을 수신하고 들어오는 각 연결에 대해 새 스레드를 시작하는 간단한 서버-클라이언트 아키텍처를 구현합니다. 클라이언트는 서버에 연결하고 서버에 문자열을 보내고 서버에서 수정된 버전의 문자열(이 경우 문자열은 대문자로 표시됨)을 수신합니다. 클라이언트와 서버는 입력 및 출력 스트림을 사용하여 통신합니다.

반응형