👉🏻 이 글은 자바의 정석(3판) Ch.16을 공부하며 적은 내용입니다.
프로토콜://호스트명:포트번호/경로명/파일명?쿼리스트링#참조
포트번호, 쿼리, 참조는 생략 가능
프로토콜: 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신 규약(http)
호스트명: 자원을 제공하는 서버의 이름
포트번호: 통신에 사용되는 서버의 포트번호
경로명: 접슨하려는 자원이 저장된 서버상의 위치
파일명: 접근하려는 자원의 이름
쿼리(query)
참조(anchor)
URL url = new URL("http://.......html");어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 클래스로 추상클래스이다. (HttpURLConnection, JarURLConnection이 URLConnection을 상속받아 구현하였다.)
URLConnection을 이용해서 연결하고자 하는 자원에 접근하고 읽고 쓰기를 할 수 있다.
public static void main(String args[]){
URL url = null;
BufferedReader input = null;
String address = "http://www.codechobo.com/sample/hello.html";
String line = "";
try{
url = new URL(address);
input = new BufferedReader(new InputStreamReader(url.openStream()));
while((line = input.readLine()) != null){
System.out.println(line);
}
}catch(Exception e){
e.printStackTrace();
}
}
openStream()은 openConnection()을 호출해서 URLConnection을 얻은 다름 여기에 다시 getInputStream()을 호출한 것과 같다.즉, URL에 연결해서 InputStream을 얻어온다.
소켓 프로그래밍 : 소켓을 이용한 통신 프로그래밍을 뜻한다.
소켓(socket) : 프로세스간의 통신에 사용되는 양쪽 끝단(endpoint).
java.net패키지를 통해 소켓프로그래밍 지원.
소켓통신에 사용되는 프로토콜에 따라 다른 종류의 소켓을 구현하여 제공.
TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다.
TCP와 UDP는 전송방식이 다르다.
| 항목 | TCP | UDP |
|---|---|---|
| 연결방식 | 연결 기반 - 연결 후 통신(전화기) - 1:1 통신 방식 | 비연결 기반 - 연결없이 통신(소포) - 1:1, 1:n, n:n 통신 방식 |
| 특징 | 데이터의 경계를 구분하지 않음 신뢰성 있는 데이터 전송 - 전송 순서 보장 - 수신 여부 확인함 - 패킷 관리 필요 없음 UDP보다 전송속도가 느림. | 데이터의 경계를 구분함.(datagram) 신뢰성 없는 데이터 전송 - 전송 순서 바뀔 수 있음 - 수신여부 확인 안함 - 패킷 관리해주어야 함. TCP보다 전송속도 빠름. |
| 관련 클래스 | Socket ServerSocket | DatagramSocket DatagramPacket MulticastSocket |
연결지향적인 프로토콜이 아니기 때문에 ServerSocket이 필요하지 않다.
UCP통신에서 사용하는 소켓은 DatagramSocket이며, 데이터를 DatagramPacket에 담아서 전송한다.
DatagramPacket은 헤더와 데이터로 구성되어 있으며, 헤더에는 수신할 호스트의 정보가 저장되어 있다.