ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20일 차 TCP통신
    삼성SDS_멀티캠퍼스/Java 2015. 10. 6. 17:09
    반응형

    import java.io.BufferedReader;

    import java.io.BufferedWriter;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.io.OutputStreamWriter;

    import java.net.InetAddress;

    import java.net.Socket;

    import java.util.Scanner;


    /*

     Socket객체를 서버의 아이피주소를 지정해서 생성

     Socket객체로부터 getOutputStream()을 얻어 write해서 보내고

     Socket객체로부터 getInputStream()을 얻어 read해서 읽고

     통신한다

     */

    public class TCP_Client2 implements Runnable {


    Socket socket = null;

    Scanner scan = new Scanner(System.in);

    String msg = null;

    BufferedWriter bw = null;


    public TCP_Client2() {


    try {

    socket = new Socket(InetAddress.getByName("70.12.115.113"), 5000);

    bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }


    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {


    while (true) {

    msg = scan.nextLine() + "\n";

    bw.write(msg);

    bw.flush();

    }


    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally {

    try {

    if (socket != null)

    socket.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    }

    }







    import java.io.BufferedReader;

    import java.io.IOException;

    import java.io.InputStreamReader;

    import java.net.ServerSocket;

    import java.net.Socket;

    import java.util.Date;


    /*

    ServerSocket 객체를 포트지정해서 생성

    ServerSocket 객체를 accept()메소드를 호출(클라이언트의 요청대기)

    클라이언트의 요청이 들어와서 연결이 되면

    accept()메소드의 반환값으로 Socket객체가 리턴된다.

    Socket객체로부터 getOutputStream()을 얻어 write해서 보내고

    Socket객체로부터 getInputStream()을 얻어 read해서 읽고

    통신한다

    */

    public class TCP_Server2 implements Runnable {

    ServerSocket serverSocket = null;

    Socket socket = null;


    public TCP_Server2(ServerSocket socket) {

    serverSocket = socket;

    }


    @Override

    public void run() {

    // TODO Auto-generated method stub

    try {

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

    socket = serverSocket.accept(); // 여기까지하면 5000번 포트를 접속 (소켓이 연결되면 클라이언트와 서버의 차이가 없어짐)

    System.out.println("연결되었습니다");

    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

    while (true) {


    Date date = new Date();

    String str = date + " -- : " + br.readLine() + "\n";

    System.out.println(str);

    }

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    } finally {

    try {

    if (socket != null)

    socket.close();

    if (serverSocket != null)

    serverSocket.close();

    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }


    }

    }

    }





    import java.io.IOException;

    import java.net.ServerSocket;


    public class Test {


    public static void main(String[] args) {


    try {

    ServerSocket socket = new ServerSocket(5000);

    Thread t1 = new Thread(new TCP_Client2());

    Thread t2 = new Thread(new TCP_Server2(socket));

    t1.start();

    t2.start();


    } catch (IOException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }


    }

    }






    반응형
Designed by Tistory.