ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Server / Client 간 Thread를 이용한 1:1 실시간 채팅
    JAVA 코드 2019. 2. 21. 11:40

    -Server 소스

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Scanner;

    public class Server {
         public void start(){ 

              ServerSocket serverSocket = null;
              Socket socket = null;
      
               try {
                   serverSocket = new ServerSocket(5555);
                   System.out.println("Server is Waiting...");
                   socket = serverSocket.accept();

                   System.out.println("Server is Start...");
       
                   Sender sender = new Sender(socket);
                   Receiver receiver = new Receiver(socket);
       
                   sender.start();
                   receiver.start();
       
              } catch (IOException e) {

              }
      
         }
     
         class Sender extends Thread{
              Socket socket;
              DataOutputStream out;
              String name;
      
              Sender(Socket socket){
                   this.socket = socket;
       
                   try {
                        out = new DataOutputStream(socket.getOutputStream());
                        name = "[" + socket.getInetAddress() + "]";
            
                   } catch (IOException e) {
        
                   }
              }
      
              public void run(){
                   Scanner scan = new Scanner(System.in);
                   while(out != null){
                        try {
                             out.writeUTF(name + scan.nextLine());
                        } catch (IOException e) {


                        }
                   }
              }
          }
     
         class Receiver extends Thread{
              Socket socket;
              DataInputStream in;
      
              Receiver(Socket socket){
                   this.socket = socket;
                   try {
                        in = new DataInputStream(socket.getInputStream());
                   } catch (IOException e) {


                   }
              }
      
              public void run(){
                   while(in != null){
                        try {
                             System.out.println(in.readUTF());
                        } catch (IOException e) {


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



    -Client 소스

    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Scanner;

    public class Client {
         final private String serverIP = "203.233.196.179";
     
         public static void main(String args[]){
              new Client().start();
         }
     
         public void start(){
              try {
                   Socket socket = new Socket(serverIP, 5555);
                   System.out.println("Server is Connected....");
       
                   Sender sender = new Sender(socket);
                   Receiver receiver = new Receiver(socket);
       
                   sender.start();
                   receiver.start();
       
       
              } catch (UnknownHostException e) {


              } catch (IOException e) {


              }
         }
     

         class Sender extends Thread{
              Socket socket;
              DataOutputStream out;
              String name;
      
              Sender(Socket socket){
                   this.socket = socket;
       
                   try {
                        out = new DataOutputStream(socket.getOutputStream());
                        name = "[" + socket.getInetAddress() + "]";
            
                   } catch (IOException e) {
        
                   }
              }
      
              public void run(){
                   Scanner scan = new Scanner(System.in);
                   while(out != null){
                        try {
                             out.writeUTF(name + scan.nextLine());
                        } catch (IOException e) {


                        }
                   }
              }
          }
     
         class Receiver extends Thread{
              Socket socket;
              DataInputStream in;
      
              Receiver(Socket socket){
                   this.socket = socket;
                   try {
                        in = new DataInputStream(socket.getInputStream());
                   } catch (IOException e) {


                   }
              }
      
              public void run(){
                   while(in != null){
                        try {
                             System.out.println(in.readUTF());
                        } catch (IOException e) {


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

     

     

    Server와 Client에 각각 Sender와 Receiver가 같이들어 있는 이유는

    각각 다른 컴퓨터에서 실행하기 때문이다.






    'JAVA 코드' 카테고리의 다른 글

    int[]형 배열 Integer[]로 변환하기  (0) 2019.03.03
    간단한 계산기  (0) 2019.02.21

    댓글

Designed by Tistory.