UDP Socket Lifecycle
UDP 서버에는 연결 대기열이 없다
UDP는 포트에 데이터그램 소켓을 묶은 뒤, 도착한 묶음마다 발신자 주소를 보고 바로 응답한다. 연결 객체를 만드는 단계가 없다.
서버는 listen/accept 없이 recvfrom으로 바로 대기한다
클라이언트는 sendto에 목적지 주소를 붙여 보낸다
UDP connect는 핸드셰이크가 아니라 기본 상대 지정이다
TCP / SOCK_STREAM
연결을 먼저 만들고 바이트를 흘린다
1socket()으로 스트림
소켓 생성
2bind() 후
listen()으로 대기열
개방
3accept()가
클라이언트별 연결 소켓 반환
4send()/recv()로 연결된 상대와 통신
UDP / SOCK_DGRAM
포트에 묶고 도착한 데이터그램을 처리한다
1socket()으로
데이터그램 소켓 생성
2bind()로 서버
포트에 연결
×listen()/accept()
단계 없음
3recvfrom()이
데이터와 발신자 주소를 함께 반환
4sendto()로 그
주소에 응답
주의: UDP 소켓에도 connect()를 호출할 수 있지만 TCP처럼 연결을 수립하지 않는다. 기본 목적지를 기억하고, 다른 주소에서 온 데이터그램을 필터링하는 API 편의에 가깝다.