서버와 클라이언트
서버: 서비스를 제공하는 컴퓨터
서버의 종류는 제공하는 서비스의 종류에 따라 file server, mail server, application server 등이 있다
전용 서버가 있는 경우도 있고(server-based model)
클라이언트가 서버역할을 동시에 수행하는 경우도 있다(peer-to-peer model)
클라이언트: 서비스를 사용하는 컴퓨터
IP주소와 포트
IP주소는 네트워크 주소와 호스트 주소로 구분되는데
서로 다른 두 호스트(컴퓨터)의 네트워크 주소 부분이 같다면 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미
마지막 8자리는 호스트 주소인데 호스트 주소가 0인 것은 네트워크 자신을 나타내고 255는 브로드 캐스트 주소로 사용되므로
실제 네트워크에 포함 가능한 호스트 개수는 254개(2진수 8자리)이다.
IP주소는 컴퓨터의 네트워크 어댑터 까지만 연결됨->컴퓨터 내까지 연결되기 위해서는 포트번호가 필요하다
port binding: 서버는 시작할 때 고정적인 포트 번호를 가지고 시작한다
서버는 고정적인 포트번호를 사용하지만
클라이언트가 서버에서 보낸 정보를 받기 위해서나 서버가 클라이언트로 데이터를 보낼 때 동적으로 포트번호를 정해서 사용한다(소켓은 동적인 포트번호를 사용)
@ IP와 URL관련 클래스
InetAddress (자바에서 IP주소를 다루기 위한 클래스) URL (자바에서 URL(서버가 제공하는 자원에 접근할 수 있는 주소를 표현)을 다루기 위한 클래스) URLConnection |
소켓 프로그래밍
TCP |
UDP |
연결 후 통신 데이터의 신뢰성 보장 |
비연결 통신 신뢰성 보장 못함 |
관련 클래스: ServerSocket Socket ( InputStream DataInputStream OutputStream DataOutputStream ) |
관련 클래스: DatagramSocket DatagramPacket MulticastSocket |
먼저 상대편과 연결 후 통신하므로 데이터가 잘 전송 되었는지 확인하고 전송 실패시 해당 데이터를 재전송 한다 (ex. 전화기) |
상대편과 연결하지 않고 데이터를 전송하며, 데이터를 전송 하지만 바르게 전송되었는지 확인하지않는다. 그런 이유로 빠른 데이터 전송이 가능하다(ex. 소포) |
TCP 소켓 프로그래밍
@ 절차
->서버 프로그램에서는 서버소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비
-> 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결 요청
-> 서버소켓은 클라이언트의 연결요청을 받고 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다
-> 클라이언트의 소켓과 새로 생성된 서버의 소켓이 서버소켓과 관계없이 일대일 통신을 한다
그러므로 서버소켓은 처음 원격 사용자의 연결요청을 받아서 새로운 소켓을 생성해서 상대편 소켓과 통신할 수 있도록 연결해주는 역할만 한다고 보면되고(한 포트에 하나의 ServerSocket만 연결할 수 있다)
실제 데이터 통신은 소켓과 소켓 간에 이루어진다(소켓에는 InputStream과 OutputStream을 통해 프로세스간의 통신(입출력)을 한다)
소켓은 사용가능한 임의의 포트를 선택해서 사용한다
한쪽 소켓의 OnputStream은 상대편 소켓의 InputStream과 연결되고 반대 또한 같다
@ TCP 소켓 프로그래밍의 여러가지 방법
# 서버소켓을 그냥 사용하는 경우(서버소켓은 클라이언트의 요청이 올 때까지 계속 기다리게된다 / 연결이 되고 나면 소켓 간의 InputStream과 Outputstream을 통하여 통신한다)
# 쓰레드를 이용해 클라이언트의 연결요청을 동시에 처리하는 경우
# 소켓으로 데이터를 송신하는 작업과 수신하는 작업을 별도의 쓰레드로 처리하여 송신과 수신이 동시에 이루어지도록 하는 경우
# HashMap을 이용해서 서버에 접속한 클라이언트를 한데 모아 멀티 채팅서버를 구성
UDP 소켓 프로그래밍
DatagramSocket에서 데이터를 DatagramPacket에 담아서 전송
ServerSocket은 필요하지 않다(비연결 지향, 데이터의 신뢰성 불필요)
서버와 클라이언트
서버: 서비스를 제공하는 컴퓨터
서버의 종류는 제공하는 서비스의 종류에 따라 file server, mail server, application server 등이 있다
전용 서버가 있는 경우도 있고(server-based model)
클라이언트가 서버역할을 동시에 수행하는 경우도 있다(peer-to-peer model)
클라이언트: 서비스를 사용하는 컴퓨터
IP주소와 포트
IP주소는 네트워크 주소와 호스트 주소로 구분되는데
서로 다른 두 호스트(컴퓨터)의 네트워크 주소 부분이 같다면 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미
마지막 8자리는 호스트 주소인데 호스트 주소가 0인 것은 네트워크 자신을 나타내고 255는 브로드 캐스트 주소로 사용되므로
실제 네트워크에 포함 가능한 호스트 개수는 254개(2진수 8자리)이다.
IP주소는 컴퓨터의 네트워크 어댑터 까지만 연결됨->컴퓨터 내까지 연결되기 위해서는 포트번호가 필요하다
port binding: 서버는 시작할 때 고정적인 포트 번호를 가지고 시작한다
서버는 고정적인 포트번호를 사용하지만
클라이언트가 서버에서 보낸 정보를 받기 위해서나 서버가 클라이언트로 데이터를 보낼 때 동적으로 포트번호를 정해서 사용한다(소켓은 동적인 포트번호를 사용)
@ IP와 URL관련 클래스
InetAddress (자바에서 IP주소를 다루기 위한 클래스) URL (자바에서 URL(서버가 제공하는 자원에 접근할 수 있는 주소를 표현)을 다루기 위한 클래스) URLConnection |
소켓 프로그래밍
TCP |
UDP |
연결 후 통신 데이터의 신뢰성 보장 |
비연결 통신 신뢰성 보장 못함 |
관련 클래스: ServerSocket Socket ( InputStream DataInputStream OutputStream DataOutputStream ) |
관련 클래스: DatagramSocket DatagramPacket MulticastSocket |
먼저 상대편과 연결 후 통신하므로 데이터가 잘 전송 되었는지 확인하고 전송 실패시 해당 데이터를 재전송 한다 (ex. 전화기) |
상대편과 연결하지 않고 데이터를 전송하며, 데이터를 전송 하지만 바르게 전송되었는지 확인하지않는다. 그런 이유로 빠른 데이터 전송이 가능하다(ex. 소포) |
TCP 소켓 프로그래밍
@ 절차
->서버 프로그램에서는 서버소켓을 사용해서 서버 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비
-> 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결 요청
-> 서버소켓은 클라이언트의 연결요청을 받고 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다
-> 클라이언트의 소켓과 새로 생성된 서버의 소켓이 서버소켓과 관계없이 일대일 통신을 한다
그러므로 서버소켓은 처음 원격 사용자의 연결요청을 받아서 새로운 소켓을 생성해서 상대편 소켓과 통신할 수 있도록 연결해주는 역할만 한다고 보면되고(한 포트에 하나의 ServerSocket만 연결할 수 있다)
실제 데이터 통신은 소켓과 소켓 간에 이루어진다(소켓에는 InputStream과 OutputStream을 통해 프로세스간의 통신(입출력)을 한다)
소켓은 사용가능한 임의의 포트를 선택해서 사용한다
한쪽 소켓의 OnputStream은 상대편 소켓의 InputStream과 연결되고 반대 또한 같다
@ TCP 소켓 프로그래밍의 여러가지 방법
# 서버소켓을 그냥 사용하는 경우(서버소켓은 클라이언트의 요청이 올 때까지 계속 기다리게된다 / 연결이 되고 나면 소켓 간의 InputStream과 Outputstream을 통하여 통신한다)
# 쓰레드를 이용해 클라이언트의 연결요청을 동시에 처리하는 경우
# 소켓으로 데이터를 송신하는 작업과 수신하는 작업을 별도의 쓰레드로 처리하여 송신과 수신이 동시에 이루어지도록 하는 경우
# HashMap을 이용해서 서버에 접속한 클라이언트를 한데 모아 멀티 채팅서버를 구성
UDP 소켓 프로그래밍
DatagramSocket에서 데이터를 DatagramPacket에 담아서 전송
ServerSocket은 필요하지 않다(비연결 지향, 데이터의 신뢰성 불필요)