char sa_data[] socket address (implicit conversion warning 해결)


char sa_data[] socket address (implicit conversion warning 해결)

SMTP 클라이언트 프로토콜을 구현하던 중에 헷갈리던 C언어 문법이 있어, 정리해봅니다. 유닉스 기반 소켓 라이브러리인 <sys/socket.h> 를 사용하면, 다음의 구조체를 이용할 수 있습니다. struct sockaddr { __uint8_t sa_len; sa_family_t sa_family; char sa_data[14]; }; sa_data에서 첫 번째 두 바이트는 포트번호를 위해 할당되어 있고, 그 뒤로는 아이피 주소를 위해 할당되어 있습니다. (IP주소 이후 남는 부분은 0이 들어가는 것으로 알고 있습니다.) 따라서, 소켓 포트번호와 IP주소를 할당하기 위해 다음과 같이 코드를 짰는데, warning이 뜨더라구요. sock_addr.sa_data[0] = htons(25); // htons(),htonl():'host'to'network'short/long \ port: 25 sock_addr.sa_data[2] = htonl(3232235528); // "192.1...



원문링크 : char sa_data[] socket address (implicit conversion warning 해결)