c connect()错误 - 参数无效

时间:2014-06-13 09:14:21

标签: c sockets connect

我正在写一个简单的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;
}

1 个答案:

答案 0 :(得分:3)

您正在使用带有AF_INET套接字的AF_PPPoX地址。这是混合苹果和长尾小鹦鹉。

PPP代表&#34;点对点&#34;,此域中没有IP地址。选择你的游戏。您可以通过Internet连接,使用socket(AF_INET, ...,也可以通过PPP连接并使用其中一种PPP协议,如PX_PROTO_OLACPX_PROTO_OPNS,以及相应的套接字地址类型({{1} }或sockaddr_pppolac)代替sockaddr_pppopns