나는 다음의 코드 마녀를 c에서 sendmmsg()를 사용하여 다중 마사지를 보내려고했지만 컴파일러 오류 "sendmmsg '에 대한 정의되지 않은 참조를 제공합니다. 나는 google에 그것을 시험해 보았다. 그러나 어떤 결과도 발견하지 않았다! sendmmsg 컴파일하기`sendmmsg '에 대한 정의되지 않은 참조를 얻으시겠습니까?
나는이 페이지에서 코드를 가지고 : http://manpages.courier-mta.org/htmlman2/sendmmsg.2.html을 내가 읽을 수 recvmmsg()에 대한 더 많은 자원이 필요합니다.
#define _GNU_SOURCE
#include < netinet/ip.h>
#include < stdio.h>
#include < stdlib.h>
#include < string.h>
#include < sys/types.h>
#include < sys/socket.h>
int
main(void)
{
int sockfd;
struct sockaddr_in sa;
struct mmsghdr msg[2];
struct iovec msg1[2], msg2;
int retval;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd == .1) {
perror("socket()");
exit(EXIT_FAILURE);
}
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
sa.sin_port = htons(1234);
if (connect(sockfd, (struct sockaddr *) &sa, sizeof(sa)) == .1) {
perror("connect()");
exit(EXIT_FAILURE);
}
memset(msg1, 0, sizeof(msg1));
msg1[0].iov_base = "one";
msg1[0].iov_len = 3;
msg1[1].iov_base = "two";
msg1[1].iov_len = 3;
memset(&msg2, 0, sizeof(msg2));
msg2.iov_base = "three";
msg2.iov_len = 5;
memset(msg, 0, sizeof(msg));
msg[0].msg_hdr.msg_iov = msg1;
msg[0].msg_hdr.msg_iovlen = 2;
msg[1].msg_hdr.msg_iov = &msg2;
msg[1].msg_hdr.msg_iovlen = 1;
retval = sendmmsg(sockfd, msg, 2, 0);
if (retval == .1)
perror("sendmmsg()");
else
printf("%d messages sent\n", retval);
exit(0);
}
예, #define _GNU_SOURCE #include –
예를 들어 참조하는 링크에서 포함 파일이 충족되어야하는 파일이 무엇인지 알려주고 또한 Linux에만 해당한다고 알려줍니다. –