sendto dest_len无效

时间:2017-09-24 05:37:18

标签: c udp errno

我正在使用UDP服务器,我从EINVAL函数获得了sendto的错误。文档说这是因为The dest_len argument is not a valid length for the address family。我无法理解这一点。这是违规行。

*clientlen = sizeof(struct sockaddr);
printf("Clientlen: %d\n",*clientlen);
perror("Before:");
tmpn = sendto(sockfd, buf, BUFSIZE, 0, (struct sockaddr *) clientaddr, *clientlen);
perror("After:");
printf("Errno: %d\n",errno);
if(tmpn < 0) perror("Acknowledging");
printf("Clientlen: %d\n",*clientlen);

这提供了以下信息:

Clientlen: 16
Before:: Success
After:: Invalid argument
Errno: 22
Acknowledging: Invalid argument
Clientlen: 16

这是我所指的文件:http://pubs.opengroup.org/onlinepubs/009695399/functions/sendto.html

我知道perror设置在这一行,所以问题必须来自这里。 clientlen的值为16,我使用ipv4udp

我查看了这个问题,但似乎没有帮助。 UDP sendto() error: invalid argument

作为一个绝望的希望,我尝试了所有甚至整数从0到32(特别是28和16,分别是ipv4和ipv6),看看是否能解决问题,但事实并非如此。我会喜欢建议。

0 个答案:

没有答案