linux socket套接字accept错误:Bad address

如果在socket创建、bind、listen的返回值上都没有问题,那么问题很有可能是accept函数的参数。
int accept(int __fd, sockaddr *restrict __addr, socklen_t *restrict __addr_len);
fd:套接字文件描述符
addr:传出参数,要接受客户端的sockaddr_in的地址,函数执行后会自动填充。
addr_len:为传入传出参数,传入时为函数调用时提供参数addr的长度,传出时为客户端地址结构体的实际长度;

后面两个参数不能出现这种情况:accept(sockfd,&addr,NULL);
否则会由perror打出Bad address;

可以都存在,也可以都不接收,但是不能只接受地址。

你可能感兴趣的:(bug日志,linux)