我正在写一个简单的UDP客户端并且错误返回为"无效的参数"但我不知道错误是什么。它是在linux上编译的。我的代码如下。
int udp_fd = -1;
struct sockaddr_in addr;
int port = 1701;
udp_fd = socket(AF_PPPOX, SOCK_DGRAM, 0);
if (udp_fd < 0) {
printf("fail to get UDP socket\n");
return 0;
}
memset((char *) &addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("31.25.210.118");
addr.sin_port = htons(port);
if(connect(udp_fd, (struct sockaddr *)&addr, sizeof(addr)) < 0 ) {
printf("UDP connect failed, errno = %s\n", strerror(errno));
return 0;
}
答案 0 :(得分:3)
您正在使用带有AF_INET
套接字的AF_PPPoX
地址。这是混合苹果和长尾小鹦鹉。
PPP代表&#34;点对点&#34;,此域中没有IP地址。选择你的游戏。您可以通过Internet连接,使用socket(AF_INET, ...
,也可以通过PPP连接并使用其中一种PPP协议,如PX_PROTO_OLAC
或PX_PROTO_OPNS
,以及相应的套接字地址类型({{1} }或sockaddr_pppolac
)代替sockaddr_pppopns
。