socket的recv非常慢,为什么?

当遇到socket的recv操作执行缓慢时,可能是因为默认的Connection设置为keep-alive。解决方法是在请求头中添加'Connection: close' ,或者通过修改apache配置文件将keepalive设为off,但后者不推荐。
摘要由CSDN通过智能技术生成
//获取用户信息
CString CMySock::GetMemberInfo(char requestUrl[],char Data[])
{
        char RequestData[1024];
        strcpy(RequestData,Data);
        LPHOSTENT lphost= gethostbyname(requestUrl);
        sockaddr_in server;
        server.sin_family = AF_INET;
        //server.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr;
        server.sin_addr.s_addr = inet_addr(requestUrl);
        server.sin_port = htons(this->m_Port);

        if (connect(this->m_ManagerSock, (struct sockaddr *)&server,  sizeof(struct sockaddr)) == SOCKET_ERROR){
                MessageBox(NULL,_T("连接失败,请重试!"),_T("错误"),MB_OK|MB_ICONINFORMATION);
                closesocket(this->m_ManagerSock);
                return NULL;
        }
        int retval= send(this->m_ManagerSock,RequestData,sizeof(RequestData)-1,0);

        char buffer[1024]={0};
        CString strResult;
        //char resultBuffer[1024] = "";
        while( SOCKET_ERROR!= retval && retval>0)
        {
                if (SOCKET_Select(this->m_ManagerSock))
                {
                        ZeroMemory(buffer,sizeof(buffer));
                        retval = recv(this->m_ManagerSock ,(char*)buffer,sizeof(buffer),0);        
                        strResult += buffer;
                }
        }
        return strResult;
}

在另外一个函数中进行调用:

        char sz[] =      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值