자바 소켓 프로그래밍으로 채팅 프로그램을 만드는데 스레드로 문자열을 어떻게 전송하나요?

조회수 50회

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner;

public class Server { private ServerSocket serverSocket = null; private Socket socket = null; private BufferedReader in = null; private BufferedWriter out = null; private Scanner sc = new Scanner(System.in);

public Server() {

    try {
        System.out.println("연결 대기중");
        serverSocket = new ServerSocket(9999);
        socket = serverSocket.accept();
        System.out.println("연결 완료");

        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        // Server가 입력한 문자열
        String serverMessage = null;
        while (true) {
            System.out.print("서버: ");
            serverMessage = sc.nextLine();
            out.write(serverMessage + "\n");
            out.flush();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    GetMessage th = new GetMessage();
    th.start();
}

// Client가 입력한 문자열
class GetMessage extends Thread {
    @Override
    public void run() {
        String clientMessage = null;
        while (true) {
            try {
                if (clientMessage == null) {
                    return;
                }
                clientMessage = in.readLine();
                System.out.println("클라이언트: " + clientMessage);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

public static void main(String[] args) {
    new Server();
}

}

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.util.Scanner;

public class Client { private Socket socket = null; private BufferedReader in = null; private BufferedWriter out = null; private Scanner sc = new Scanner(System.in);

public Client() {
    GetMessage th = new GetMessage();
    th.start();
    try {
        socket = new Socket("localhost", 9999);
        System.out.println("연결 완료");

        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        // Client가 입력한 문자열
        String clientMessage;
        while (true) {
            System.out.print("클라이언트: ");
            clientMessage = sc.nextLine();
            out.write(clientMessage + "\n");
            out.flush();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

// Server가 입력한 문자열
class GetMessage extends Thread {
    @Override
    public void run() {
        String serverMessage = null;
        while (true) {
            try {
                if (serverMessage == null) {
                    return;
                }
                serverMessage = in.readLine();
                System.out.println("서버: " + serverMessage);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

public static void main(String[] args) {
    new Client();
}

}

서버 측에서 문자를 전송하면 클라이언트 쪽에서 문자가 보이지 않습니다. 무엇이 문제인가요?

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.