[socket]客户端connect成功但是服务端accept()函数返回-1问题

问题:客户端connect成功但是服务端accept()函数返回-1问题

hongxi.zhu 2023-11-17

现象:当客户端运行时,客户端connect方法return 0成功,但是服务端accept方法会return -1,使用perror()打印出具体报错为Invalid argument.

原因:

头文件#include 
定义:int accept(int sockfd, struct sockaddr* addr, socklen_t *addrlen)
  1. sockfd非法(这个fd没经过前面的bind、listen等流程或者为负值)
  2. addrlen非法 (这个变量没初始化,它不能为负值)

解决:

第一种情况就需要排查前面的bind、listen等方法异常时是否也往下走了,要及时退出

第二种情况定义addrlen时需要初始化这个变量,如:

    socklen_t addrlen= sizeof(struct sockaddr);

你可能感兴趣的:(linux,socket,unix,socet,accept)