• [자바] 클라이언트와 서버와의 양방향 연결 방식 예시문 정리하기

    2022. 12. 18.

    by. 김홍원

    클라이언트와 서버가 서로 연결할 준비가 되어 있으면 InputStream과 OutputStream을 이용해서 양방향으로 서로 통신하며 연결할 수 있다.

    ==========================================================
    클라이언트가 서버에게 주고 받는 코드를 입력했다.


         Socket socket = null; 



         OutputStream outputStream = null;

         DataOutputStream dataOutputStream = null;
         InputStream inputStram = null;

         DataInputStream dataInputStream = null;



         Scanner scanner = null;



          //오고 가는 값을 읽어들이기 위해서 Scanner 클래스도 사용한다.



          try{

                socket = new Socket("localhost", 9000);

               System.out.println(" 서버 연결합니다 ");
               

               outputStream = socket.getOutputStream();

               dataOutputStream = new DataOutputStream(outputStream);

               inputStream = socket.getInputStream();

               dataInputStream = new DataInputStream(inputStream);

     

      // 클라이언트가 서버에 요청을 보내고 그에 대한 요청값을 받아오는 것을 작성한 것이다.//

       

               scanner = new Scanner (System.in);

               

               while (true) {

                 System.out.println("메세지를 입력하시오");

                 String outerMessage = scanner.nextLine();

                 dataOuterputStream.writeUTF(outMessage);

                 dataOutputStream.flush();



                 String innerMessage = dataInputStream.readUTF();

                 System.out.println("inMessage: " + inMessage);



                 if(outMessage.equls("STOP")) break;

                 

               }



             }catch (Exception e) {

                e.printStackTrace();
              }finally {

                   try{

                        if(dataOutputStream != null) dataOutputStream.close();
                         if(outputStream != null) outputStream.close();
                         if(dataInputStream != null) dataInputStream.close();

                         if(InputStream != null) InputStream.close();
                           

                          if(socket != null) socket.close();
                    } catch (Exception e){

                         e.printStackTrace();

                      }

               }

     

     

     

    ==========================================================

      클라이언트에게 정보를 받은 서버에서의 주고 받는 작동과정이다.

     

             ServerSocket serverSocket = null;

             Socket socket = null; 

         InputStream InputStream = null;

         DataInputStream dataInputStream = null;
         OutputStream OutputStram = null;

         DataOutputStream dataOutputStream = null;

     

          try{

         

              serverSocket = new ServerSocket(9000);

              System.out.println("클라이언트의 요청 받아들임");

     

               socket = serverSocket.accept();

               System.out.println("클라이언트 요청 접속 연결");

               System.out.println("socket: " + socket);

             

                inputStream = socket.getInputStream();

                dataInputStream = new DataInputStream(inputStream);

                 outputStream = socket.getOutputStream();

                 dataOutputStream = new DataOutputStream(outputStream);

            

                 while (true) {

                         String clinetMessage = dataInputStream.readUTF();

                         System.out.println("clientMessage: " + clientMessage);

                          dataOutputStream.writeUTF("요청 메세지 전송 완료");

                          dataOutputStream.flush();

     

                          if(clientMessage.equlas("STOP")) break;

                    }

     

     

            }catch (Exception e) {

                e.printStackTrace();
              }finally {

     

               try{

                        if(dataInputStream != null) dataInputStream.close();
                         if(InputStream != null) InputStream.close();
                         if(dataOutputStream != null) dataOutputStream.close();

                         if(outputStream != null) outputStream.close();
                           

                          if(socket != null) socket.close();
                    } catch (Exception e){

                         e.printStackTrace();

                      }

    댓글