3.7 주소 정보 할당하기(bind_sock) ːː tcp / ip ːː

3.7 주소 정보 할당하기(bind_sock)

-----------------------------------------------------------
#include<sys/socket.h>
#include<sys/types.h>

int bind(int sockfd, struct sockaddr* myaddr, int addrlen);

**
sockfd : 주소를 할당하고자 하는 소켓의 파일 디스크립터를 인자로 전달한다.
myaddr : 할당코자 하는 주소정보를 지니는 sockaddr_in 구조체 변수의 포인터를 인자로 전달.
전달되는건 sockaddr_in 구조체 변수의 포인터인데, 함수 선언에서 sockaddr구조체 변수의 포인터를 전달하라 선언되어있다.
addrlen : 인자로 전달된 주소 정보 구조체의 길이를 전달
-----------------------------------------------------------

bind함수에서 두번째 인자타입이 (sockaddr*) 로 선언되어 있어서 함수 호출 시 형 변환을 통해 인자를 전달했다.


sockaddr 구조체

struct sockaddr {
sa_family_t sin_family;
char sa_data[14];
};

프로토콜 체계에 따라 주소 체계가 달라야 한다.
socket() 함수와 bind() 함수는 프로토콜에 독립적이므로 범용적으로 사용가능하게 선언되어야 한다.

즉, bind() 함수는 인터넷 프로토콜을 위한 sockaddr_in 구조체의 포인터도 인자값으로 받을 수 있어야 하지만,
local UNIX 프로토콜읠 위한 sockaddr_un 구조체의 포인터도 인자값으로 받을 수 있어야 한다.
따라서, sockaddr 이란 범용적으로 사용가능한 구조체를 선언하고 인자 타입으로 선언해준 것이다.




공유하기 버튼

싸이월드 공감트위터페이스북
 

1 2 3 4 5 6 7 8 9 10 다음