■ 주소 정보 구조체 변수 생성 및 초기화에 이은 소켓에 주소정보를 할당.

(1) bind() - 주소정보 할당

○ 함수원형
  int bind(int sockfd, struct sockaddr *myaddr, int addrlen)

○ 리턴 값
  성공 시 : 0, 실패 시 : -1

- sockfd : 주소를 할당하고자 하는 소켓의 파일 디스크립터
- myaddr : 할당하고자 하는 주소 정보를 지니고 있는 sockaddr 구조체 변수의 포인터 인자 값
- addrlen : 인자로 전달된 주소 정보 구조체의 길이

=> 함수 호출이 성공하면 sockfd가 가리키는 소켓에 myaddr이 가리키는 주소 정보가 할당된다.


(2) 소켓생성 부터 주소할당까지 소스 예제

○ Source


○ Compile & Result


- bind 함수 원형을 보면 두번째 인자의 타입이 sockaddr* 로 되어있다.
- Source를 보면 bind()함수의 두번째 인자에서 구조체 타입 캐스팅을 확인할 수 있다.

bind() 함수는 인터넷 프로토콜을 위한 sockaddr_in 구조체의 포인터 뿐만 아니라, Local UNIX 프로토콜을 위한
    sockaddr_un 구조체의 포인터 또한 인자값으로 받을 수 있어야한다.

 => 따라서 sockaddr이란 일반적인 구조체를 선언하고 인자 타입으로 지정한다.



by 민트앤라떼 2012. 2. 29. 17:14