免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3361 | 回复: 4
打印 上一主题 下一主题

accept 返回 22的错误号:Invalid argument, 救命啊! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-05 19:35 |只看该作者 |倒序浏览
#define SERVER_IP    "10.3.144.212"
#define SERVER_PORT  "8012"

int iServerFd=-1;
int gSerialNo=0;

int tcpListenProc (char *ip, char* port)
{
    int listenSock = 0,
        reuse_addr = 0;

        if (!ip || !port)
    {
        return -2;
        }
   
    listenSock =socket(AF_INET,SOCK_STREAM,0);

    struct sockaddr_in addr = {0};
   
        addr.sin_family         = AF_INET;
        addr.sin_addr.s_addr    = inet_addr(ip);
        addr.sin_port           = htons(atoi(port));

    reuse_addr = 1;
    if(setsockopt(listenSock, 1, SO_REUSEADDR,(char *)&reuse_addr,sizeof(reuse_addr)) < 0)
    {
        close(listenSock);
        return -2;
    }

        if  (bind(listenSock,(struct sockaddr*)&addr,sizeof(addr))==0 && listen(listenSock, 10)==0)
        {
        }
    else
        {
        return -3;
        }

    return listenSock;
}

int main(int argc, char **argv)
{
        int              connFd;
    socklen_t        addrLen;
    struct sockaddr_in  clientAddr={0};
    char             buf[2048];
        int              ret = -1;
   
        iServerFd = tcpListenProc(SERVER_IP, SERVER_PORT);
        if ( iServerFd<0 )
        {
                printf("iServerFd error. ret: %d\n", ret);
        }
        printf("iServerFd is %d\n", iServerFd);

        for( ; ; )
        {
                connFd = accept (iServerFd, (struct sockaddr *)&clientAddr, &addrLen);
                if ( connFd <= 0 )
                {
                        printf("error no: %d, error string: %s\n", errno, strerror(errno) );
                        continue;
                }
                else{
                        printf("connFd is %d\n", connFd);
                        snprintf(buf, sizeof(buf), "gSerialNo is %d\n", gSerialNo);
                        printf("-------[%s]\n", buf);
                        Send(connFd, buf, strlen(buf), 3);
                }
                close(connFd);
        }
               
        return 0;
}

论坛徽章:
0
2 [报告]
发表于 2007-02-05 21:50 |只看该作者
setsockopt参数错误

论坛徽章:
0
3 [报告]
发表于 2007-02-06 09:47 |只看该作者

  1. for( ; ; )
  2.         {
  3.                 connFd = accept (iServerFd, (struct sockaddr *)&clientAddr, &addrLen);
复制代码


modify:

  1. for( ; ; )
  2.         {
  3.                 addrlen = sizeof(clientAddr);
  4.                 connFd = accept (iServerFd, (struct sockaddr *)&clientAddr, &addrLen);
复制代码

论坛徽章:
0
4 [报告]
发表于 2007-02-06 10:14 |只看该作者
listen呢?

论坛徽章:
0
5 [报告]
发表于 2007-02-06 10:57 |只看该作者
  1. 服务器listen
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP