Sockets Windows防火墙处于打开状态时,Winsock Connect函数花费的时间太长

Sockets Windows防火墙处于打开状态时,Winsock Connect函数花费的时间太长,sockets,network-programming,winsock,winsock2,windows-firewall,Sockets,Network Programming,Winsock,Winsock2,Windows Firewall,我制作了一个客户端,当服务器上的windows防火墙关闭时,它将立即连接到服务器,但当防火墙打开时,它需要大约30-35秒才能连接到服务器。我已经尝试在服务器上为我的应用程序和端口添加防火墙例外,但没有任何效果,仍然需要相同的时间 以下是我尝试连接服务器的客户端代码: bool connectSocket() { _connectSocket = socket(PF_INET, SOCK_STREAM,0); if(

我制作了一个客户端,当服务器上的windows防火墙关闭时,它将立即连接到服务器,但当防火墙打开时,它需要大约30-35秒才能连接到服务器。我已经尝试在服务器上为我的应用程序和端口添加防火墙例外,但没有任何效果,仍然需要相同的时间

以下是我尝试连接服务器的客户端代码:

     bool connectSocket()
    {     

            _connectSocket = socket(PF_INET, SOCK_STREAM,0);

            if(_connectSocket == INVALID_SOCKET)
            {
                LOG_ERROR("Failed intiating socket with partner.");
                return false;
            }

            struct sockaddr_in thataddr;

            memset(&thataddr,0,sizeof(thataddr));

            thataddr.sin_addr.s_addr = inet_addr(_partnerIP.c_str());
            thataddr.sin_family = AF_INET;
            thataddr.sin_port = htons(_partnerPort);

            int i = ::connect(_connectSocket,(struct sockaddr *)&thataddr,sizeof(thataddr));

            if(i<0)
            {
                //i = WSAGetLastError();
                LOG_WARNING("Failed connecting to partner. Check partner status.");
                return false;
            }

    }
当服务器上的防火墙打开时::connect函数将花费30-35秒给出错误。 我们非常感谢您在这方面提供的任何帮助。
谢谢

在您的客户程序中,您无能为力。但是我建议使用一个程序来检查通信,例如服务器机器发送回什么,如果有什么等。你确定是连接需要时间,而不是inet_addr吗?@EJP是的,我检查了它的连接功能需要时间。