首页 > 解决方案 > socket() 返回极大的整数值

问题描述

我正在开发一个 FTP 客户端。我试图应用套接字 id 来连接服务器。这是我的代码。在类中声明了许多变量。

    int Client::connectServer() {

        int ret = 0;
        controlSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
        if(controlSocket < 0 )
        {
            cout<<"Creating Control Socket Failed";
            cout<<"err="<<strerror(errno);
            system("pause");
            return -1;
        }

        serverAddr.sin_family=AF_INET;
        serverAddr.sin_addr.s_addr=inet_addr(ip_addr.c_str());
        serverAddr.sin_port=htons(PORT);  
        memset(serverAddr.sin_zero,0,sizeof(serverAddr.sin_zero));

        ret=::connect(controlSocket,(struct sockaddr*)&serverAddr,sizeof(serverAddr));
        if(ret < 0)
        {
            cout<<"Control Socket Connecting Failed";
            cout<<"err="<<strerror(errno);
            system("pause");
            return -1;
        }
    }

我使用几乎相同的代码两次调用了这个函数。但是其中一个不起作用(无法连接)。然后我使用相同的IP地址进行调试。结果表明,除了 的值之外,所有的东西都是一样的controlSocket

controlScoket没有被初始化时,它被重视3131961357。然后它4294967295在之后的值controlSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);。我认为它大于最大文件描述符?然而errno0。另一方面,正常的 one 值1932

标签: c++socketsnetworking

解决方案


推荐阅读