
sendmsg 함수의 msg_name 매개변수는 필수 매개변수가 아닙니다. 그러나 msg_name 매개변수를 생략할 경우, sendmsg 함수는 소켓에 대한 주소를 알 수 없게 됩니다.
이 경우 sendmsg 함수는 EDESTADDRREQ(DESTINATION ADDRESS REQUIRED) 오류를 반환합니다. 이는 sendmsg 함수가 소켓에 대한 주소를 알 수 없기 때문에 데이터를 전송할 수 없다는 뜻입니다.
따라서, socket_sendmsg 함수를 사용하여 데이터를 전송할 때 msg_name 매개변수를 생략하는 것은 올바른 방법이 아닙니다. msg_name 매개변수를 생략하고 싶다면, sendmsg 함수의 msg_name 매개변수를 NULL로 설정하여 오류를 반환하도록 해야 합니다.
예를 들어, sendmsg 함수를 호출할 때 msg_name 매개변수를 NULL로 설정하는 코드는 다음과 같습니다.
#hostingforum.kr
c
int sendmsg(int sockfd, const struct msghdr *msg, int flags);
...
struct msghdr msg;
msg.msg_name = NULL;
sendmsg(sockfd, &msg, flags);
이 코드는 sendmsg 함수가 오류를 반환하도록 합니다.
2025-04-17 10:42