- bind() : 소켓에 주소와 포트를 연결 시킴
=> 외부에서 패킷이 들어왔을때 이 패킷을 어디로 보내야할지 정함
- 패킷이 어플리케이션에 전달되는 과정
랜카드를 통해 패킷 수신
-> 랜카드 드라이버가 운영체제에 패킷 전달
-> 운영체제는 소켓 리스트에서 패킷의 목적지 주소와 포트 번호가 일치하게 bind된 소켓을 찾음
-> 찾았을 경우 해당 어플리케이션에 전달
-> 어플리케이션은 recvfrom을 통해서 읽음
- 즉 bind는 운영체제가 패킷을 어떻게 전달할지 모르는 경우에 해줘야함
- recvfrom()을 먼저 호출하는 서버의 대부분의 경우 bind() 사용
- bind()를 안해도 되는 경우 : sendto()를 먼저 호출하는 경우
- sendto()를 호출할 때는 인자로 주어지는 상대방 주소 정보를 참조하여 운영체제가 자동으로 bind()를 해주기 때문
'programing > Networks' 카테고리의 다른 글
ECONNRESET (0) | 2017.02.13 |
---|---|
[펌] Peer-to-Peer Communication Across Network Address Translators (1) | 2016.09.21 |
[펌] Windows Registered I/O (RIO) vs IOCP (0) | 2015.06.03 |
[펌] 게임 서버의 구조 (0) | 2015.06.02 |
IOCP(Input Output Completion Port) (1) | 2015.06.02 |