错误提示:accept: Invalid argument

本文介绍了一种在Linux环境下编写socket通信程序时遇到的accept:Invalid argument错误及其解决方法。错误的原因在于accept调用时第三个参数未正确初始化。通过设置第三个参数为sizeof(struct sockaddr),可以解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


今天在linux写了一个简单的socket通信程序中,出现accept: Invalid argument错误提示。

定义的:

      struct sockaddr_in server_sockaddr,client_sockaddr;
       int sin_size,recvbytes;
       int server_fd,client_fd;

涉及到的代码:
   server_fd=socket(AF_INET,SOCK_STREAM,0);
  if((client_fd=accept(server_fd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)


原因:accept的第3个参数必须为正数;

解决办法:将第3个参数初始化一下,如下:
  

       struct sockaddr_in server_sockaddr,client_sockaddr;
       int sin_size,recvbytes;
       int server_fd,client_fd;

    加入: sin_size=sizeof(struct sockaddr);

   server_fd=socket(AF_INET,SOCK_STREAM,0);
  if((client_fd=accept(server_fd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值