2.02.2018

TCP/IP advanced

1. Make two Java Projects (Name one ServerProgram, and the other, ClientProgram)
2. Make three classes for each (ex. Server.java // SendThread.java // ReceiveThread.java)

<Server.java code>
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ServerSocket serverSocket null;
                Socket socket = null;

                try {
                        serverSocket = new ServerSocket(5050);
                        System.out.println("***채팅방이 열렸습니다***");
                        System.out.println("기다리는 중...\n");
                        socket serverSocket.accept(); // method를 사용하여 client로부터 연결 요청을 기다리고 요청이 오면 연결을 맺은 후 소켓을 생성함
                        System.out.println("상대방이 입장했습니다.");

                        SendThread st = new SendThread(socket);
                        ReceiveThread rt newReceiveThread(socket);
                        st.start();
                        rt.start();
                } catch (Exception e) {

                } finally {
                        try {
                                // socket.close(); // 소켓을 닫는다.
                                serverSocket.close(); // 서버소켓을 닫는다.
                        } catch (Exception e) {

                        }
                }
        }
}

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

<Client.java code>

import java.net.Socket;

public class Client {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Socket socket = null;

                try {
                        socket = new Socket("210.125.97.125", 5050);
                        System.out.println("***채팅방에 들어왔습니다***");

                        SendThread st = new SendThread(socket);
                        ReceiveThread rt = new ReceiveThread(socket);
                        st.start();
                        rt.start();

                } catch (Exception e) {
                } finally {
                        try {
                                // socket.close();

                        } catch (Exception e) {

                        }
                }
        }

}


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

<SendThread.java code>

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class SendThread extends Thread {

        Socket socket = null;

        SendThread(Socket socket) {
                this.socket = socket;
        }

        public void run() {

                try {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                        // system.in을 이용하여 console창에 입력함.

                        PrintWriter writer = new PrintWriter(socket.getOutputStream());
                        // socket.getOutputStream을 통해 소켓의 출력 스트림을 가져온다. client로 data 보낼 수 있다.

                        // 데이터를 계속 주고받을 수 있도록
                        while (true) {
                                String str = reader.readLine();

                                if (str.equals("BYE")) {
                                         break;
                                }
                                writer.println(str); // 한 행의 byte data를 쓴다.
                                writer.flush();

                        }
                } catch (Exception e) {

                } finally {
  try {
  socket.close();
                        } catch (Exception e) {
                        }
                }
        }
}

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

<ReceiveThread.java code>

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Socket;

public class ReceiveThread extends Thread {
        Socket socket = null;

        ReceiveThread(Socket s) {
                socket = s;
        }

        public void run() {
                try {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                        while (true) {
                                String str = reader.readLine();

                                if (str == null)
                                        break;

                                System.out.println(str);
                        }
                } catch (Exception e) {
                }
        }
}

댓글 없음:

댓글 쓰기