즐거운프로그래밍

[자바] ServerSocket 클래스(포트 연결로 데이터 주고 받기)

수수께끼 고양이 2023. 10. 24. 17:34
728x90
반응형

 

아래 코딩을 각각 실행 후 아래 콘솔에서 대화를 시도한다.

 

1.BackEndServer2 프로젝트

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Main {
    public static String strEnd="";
    public static void main(String[] args) throws Exception {
        ServerSocket ss = new ServerSocket(8888);
        Socket s = ss.accept(); // netstat -anp tcp | find "6666"
        DataInputStream dis = new DataInputStream(s.getInputStream());
        DataOutputStream dos = new DataOutputStream(s.getOutputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str2 = "";
        Thread sockThread = new Thread() {
            String str = "";

            @Override
            public void run() {
                try {
                    while(true) {
                        str = dis.readUTF();
                        strEnd=str;
                        if(str.equals("stop")) break;
                        System.out.println("client says:"+str);
                    }
                } catch (Exception e) {}
            }
        };
        sockThread.start();
        while(!strEnd.equals("stop")) {
            str2=br.readLine();
            dos.writeUTF(str2);
            dos.flush();
        }
        dis.close();
        s.close();
        ss.close();
    }
}

 

2.FrontEndServer2 프로젝트

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

public class Main {
    public static void main(String[] args) throws Exception {
        Socket s = new Socket("localhost",8888);
        DataOutputStream dout = new DataOutputStream(s.getOutputStream());
        DataInputStream din = new DataInputStream(s.getInputStream());
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String str = "";
        Thread sockThread = new Thread() {
            String str2="";

            @Override
            public void run() {
                try {
                    while(true) {
                        str2 = din.readUTF();
                        System.out.println("Server says:"+str2);
                    }
                } catch (Exception e) {
                }
            }
        };
        sockThread.start();
        while(!str.equals("stop")) {
            str=br.readLine();
            dout.writeUTF(str);
            dout.flush();
        }
        dout.close();
        s.close();
    }
}

 

네트워크 포트 연결로 다른 컴퓨터 사용자와도 연결이 가능함

 

 

728x90
반응형