아래 코드에서 sockaddr_in은 sockaddr 형식으로 '(struct sockaddr *) & sin'으로 변환 된 것으로 나타났습니다. 나는 sockaddr_in에있는 변수가 sockaddr에 대응하여 매핑되는 것을 알고 싶다. 다음은 스 니펫입니다.C에서 struct 유형 변환
struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
//의 IPv4 AF_INET 소켓 :
struct sockaddr_in {
short sin_family; // e.g. AF_INET, AF_INET6
unsigned short sin_port; // e.g. htons(3490)
struct in_addr sin_addr; // see struct in_addr, below
char sin_zero[8]; // zero this if you want to
};
struct sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(floodport);
sin.sin_addr.s_addr = inet_addr(argv[1]);
// 형식 변환
(struct sockaddr *) &sin // what values of sockaddr_in would be mapped to sockaddr ?
이 변환은 다음과 같이 소켓 프로그래밍있는 sendto()에서 사용된다.
sendto(s, datagram, iph->tot_len,0, (struct sockaddr *) &sin,sizeof(sin))
미리 감사드립니다.
는
그리고 정확히 귀하의 질문은 무엇입니까? – wildplasser