读书人

HttpSendRequest无法返回?解决方案

发布时间: 2012-01-24 23:11:54 作者: rapoo

HttpSendRequest无法返回?

C/C++ code
int nLen = ::WideCharToMultiByte(CP_ACP, 0, lpszPostData, _tcslen(lpszPostData), NULL, 0, NULL, NULL);    char* pData = new char[nLen];    memset(pData, 0, nLen);    ::WideCharToMultiByte(CP_ACP, 0, lpszPostData, _tcslen(lpszPostData), pData, nLen, NULL, NULL);    BOOL bRet = TRUE;    if (!(bRet = HttpSendRequest(m_hRequest, lpszHeader, _tcslen(lpszHeader), pData, nLen)))    {        m_errorno = GetLastError();        CLogUtil::Writelogln(_T("HttpSendRequest Error: %d"), m_errorno);    }    delete[] pData;

其中HTTPSENDRequest一直无法返回.但是实际上服务器已收到此发送的数据了.
本地日志.
2011-11-29 09:18:00: CMD: ERC
服务器日志
2011-11-29 09:17:51,846 INFO [STDOUT] --------------> ERCCmd content: EmployeeID 000212 EmployeePassword 000212 GBK 14 ERC
从时间来看,正是客户端发出信息.因为客户端的时间同步于服务器,会有一点点的时间差.

很显然,服务器已经收到了客户端的信息了,但是客户端的HTTPSendRequest确不返回,一直到1分钟超时
中断.这是为什么?
有人知道httpsendrequest发送的机制么?此函数的数据发送到什么程度才会返回?

[解决办法]
开一个线程异步方式试试.
[解决办法]
服务器收到后要应答的,不然客户端就一直等到超时

读书人网 >VC/MFC

热点推荐