【发布时间】:2014-06-13 17:56:02
【问题描述】:
我正在编写一个简单的 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;
}
【问题讨论】:
-
是linux编译的,不知道是不是时间错误。如何检查?
-
编译器有没有说什么?你用什么编译器?你能粘贴
gcc -Wall yourclient.c的结果吗? -
我刚刚尝试了这段代码,这是一个运行时错误,connect() 失败“因为”套接字的类型是 AF_PPPOX。我尝试使用 AF_INET,它工作正常。我认为 AF_PPPOX 套接字必须以不同的方式处理。