TCP는 연결지향적 프로토콜로 데이터를 안전하고 정확하게 전달한다.
데이터가 잘 전송 됫는지 확인 작업이 따로 있으며
작업이 추가로 있기 때문에 UDP보다 느리다.
여기서는 Socket을 이용한 통신을 해볼것이다.
Socket은 안에 IP, 포트 등 다양한 정보를 담고
상대방에게 전송된다.
다음의 간단한 예제를 통해 확인해보자.
서버
package chap12.exam02.tcp; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { ServerSocket server = null; // 1. 서버 소켓 생성 try { server = new ServerSocket(); // 2. IP를 개방 (열어주길 원하는 IP, 오픈 호스트), localhost는 자기 자신의 IP를 의미 server.bind(new InetSocketAddress("localhost", 5001)); // 3. 요청 대기 while(true) { System.out.println("요청 대기중"); // 4. 접속 요청이 있을 경우 수락 (하나의 스레드, 조인, 블로킹하여 요청이 올 때 까지 대기) Socket socket = server.accept(); // 4-1. 요청이 있을 경우 처리 (클라이언트 주소 알아내기) InetSocketAddress addr = (InetSocketAddress) socket.getRemoteSocketAddress(); System.out.println("접속 완료 >" + addr.getAddress() + ":" + addr.getPort()); } // 5. 자원 반납 (서버는 5번 아래로 잘 안씀) // 6. 종료 } catch (IOException e) { // 서버에 문제가 있을 때 // 5. 자원 반납 (서버는 5번 아래로 잘 안씀) try { server.close(); } catch (IOException e1) { e1.printStackTrace(); } // 6. 종료 e.printStackTrace(); } } }
클라이언트
package chap12.exam02.tcp; import java.io.IOException; import java.net.InetSocketAddress; import java.net.Socket; public class Client { public static void main(String[] args) { Socket socket = null; try { // 1. 소켓 생성 socket = new Socket(); // 2. 접속 요청 socket.connect(new InetSocketAddress("localhost", 5001)); // 3. 시킬 일 있으면 요청 System.out.println("접속 완료"); } catch (IOException e) { e.printStackTrace(); } finally { // 4. 종료 try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
먼저 서버를 작동한 후 클라이언트 코드도 작동을 해줘야 하는데
서버는 이클립스에서 돌리고
https://qdgbjsdnb.tistory.com/79 를 참조하여 cmd에서 클라이언트를 작동해보자.
'개념 및 코딩 > 10.네트워크' 카테고리의 다른 글
[JAVA]10-06.UDP, Datagram (0) | 2018.09.27 |
---|---|
[JAVA]10-05.N:M MultiChat Server, Client (2) | 2018.09.27 |
[JAVA]10-04.1:1 Chat Server, Client (0) | 2018.09.27 |
[JAVA]10-03.Echo Server, Client (0) | 2018.09.27 |
[JAVA]10-01.Java Network 기초, IP 얻는법 (0) | 2018.09.27 |