본문 바로가기
programing/Networks

UDP client에서 bind()

by RedWiz 2016. 9. 29.

- bind() : 소켓에 주소와 포트를 연결 시킴

=> 외부에서 패킷이 들어왔을때 이 패킷을 어디로 보내야할지 정함


- 패킷이 어플리케이션에 전달되는 과정

랜카드를 통해 패킷 수신

-> 랜카드 드라이버가 운영체제에 패킷 전달

-> 운영체제는 소켓 리스트에서 패킷의 목적지 주소와 포트 번호가 일치하게 bind된 소켓을 찾음

-> 찾았을 경우 해당 어플리케이션에 전달

-> 어플리케이션은 recvfrom을 통해서 읽음


- 즉 bind는 운영체제가 패킷을 어떻게 전달할지 모르는 경우에 해줘야함

- recvfrom()을 먼저 호출하는 서버의 대부분의 경우 bind() 사용


- bind()를 안해도 되는 경우 : sendto()를 먼저 호출하는 경우

- sendto()를 호출할 때는 인자로 주어지는 상대방 주소 정보를 참조하여 운영체제가 자동으로 bind()를 해주기 때문


참조 : https://kldp.org/node/136920