참조 : http://java.sun.com/docs/books/tutorial/networking/sockets/index.html

앞에서 살펴보았던 URL과 URLConnection 객체를 사용한 프로그래밍은 상당히 높은 추상화 단계에서 접근하는 것입니다. 하지만 만약 클라이언트-서버 프로그래밍을 하게 된다면, 매우 구체적은 단계에서 접근할 필요가 있습니다.

클라이언트-서버 프로그램들은 각자 소켓을 사용하여 서로를 연결하고 있으며 자신이 가지고 있는 소켓을 통해서 읽기 쓰기 작업을 합니다.

What Is a Socket?

네트워크에서 동작 중이 두 개의 애플리케이션을 잇는 Endpoint로 포트 번호를 사용하여 TCP 계층에서 보내진 데이터가 어떤 애플리케이션을 위한 것인지 식별할 수 있도록 합니다.

서버쪽에서는 클라이언트가 접속할 Endpoint로 특정 포트 번호를 사용하여 Socket을 생성합니다.
사용자 삽입 이미지그리고 해당 Socket으로 접속이 오면 새로운 Socket을 만들어서 접근해온 Client의 IP와 포트 번호를 설정합니다. 왜냐면, 다른 클라이언트의 접속들도 동일한 Socket으로 받아들이기 위해서입니다.
사용자 삽입 이미지즉, 모든 접속은 한 Socket에서 받아 들이고, 새로운 접속이 올 때마다 Server쪽에 새로운 Socket을 생성하여 그 Socket과 클라이언트의 Socket이 의사소통을 하게 됩니다.

자바에서 Socket을 위해 제공하는 API로 Socket와 SeverSocket이 있습니다. ServetSocket이 위에서 언급한 접속을 받아 들이기 위한(listerner) Socket을 위한 구현체이고, Socket은 그 이외의 모든 Socket을 위한 구현체 입니다.

2007/09/26 - [Java] - Java에서 URL 다루기 2
2007/09/18 - [Java] - Java에서 URL 다루기 1