[JAVA] Socket을 사용한 가위바위보

류슬기·2021년 1월 24일
0

TIL

목록 보기
4/16

서버와 클라이언트가 가위바위보를 하는 구조

Server


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

public class RSPServer {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        final int SISSOR = 1;
        final int ROCK = 2;
        final int PEPER = 3;

        InputStream in;
        OutputStream out;
        BufferedReader reader;
        PrintWriter writer;

        int port = 1234;

        try {
            ServerSocket server = new ServerSocket(port);

            while (true) {
                System.out.println("접속을 기다리는 중입니다.");
                Socket clnt = server.accept();
                System.out.println(clnt.getInetAddress() + "접속");

                out = clnt.getOutputStream();

                System.out.println("가위 바위 보를 시작합니다.");
                System.out.println("1가위 2바위 3보 숫자를 입력하세요");
                int rsp = scan.nextInt();
                out.write(rsp);

                in = clnt.getInputStream();
                reader = new BufferedReader(new InputStreamReader(in));

                System.out.println("상대방 : " + reader.read());

                if (reader.read() == rsp) {
                    System.out.println("무승부");
                } else if (reader.read() == SISSOR && rsp == PEPER) {
                    System.out.println("user 승!");
                } else if (reader.read() == ROCK && rsp == SISSOR) {
                    System.out.println("user 승~");
                } else if (reader.read() == PEPER && rsp == ROCK) {
                    System.out.println("user 승");
                } else {
                    System.out.println("computer 승");
                }
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
    }
}

Client


import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class RSPClient {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        RSP rspclass = new RSP();
        int port = 1234;
        String localHost = "xxx.xx.xx.xx";

        try {
            Socket socket = new Socket(localHost, port);

            OutputStream out = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(out, true);

            System.out.println("가위 바위 보를 시작합니다.");
            System.out.println("1가위 2바위 3보 숫자를 입력하세요");
            int rsp = scan.nextInt();
            writer.println(rsp);

            InputStream in = socket.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));

            System.out.println("상대방 : " + reader.read());

        } catch (UnknownHostException e) {
            System.out.println(e.getMessage());
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

    }
}

Server에서 if문이 작동이 되지 않는다
아마 메시지를 받는 과정에서 숫자열이 전달되지 않는 문제 인 것 같은데 어떻게 해결해야 할지 아직 모르겠다.

profile
FE Developer🌱

0개의 댓글