客户端经过URL的方式向服务器提交数据,不需要知道提交结果,怎样效率最高
客户端通过URL的方式向服务器提交数据,不需要知道提交结果,怎样效率最高?
我想通过URL(GET)的方式提交数据,要连续提交几W次。
请问专家们,我如何才能只发出请求,而不需要知道请求的结果(是否成功)和服务器的返回结果,这应该如果实现?
另外,手头没有MSDN,CInternetSession::OpenURL函数、CHttpConnection::OpenRequest函数、CHttpFile::SendRequest函数,有什么区别呢?
谢谢大家!
------最佳解决方案--------------------
我实践下来
CInternetSession 这个一定需要
CHttpConnection和CHttpFile 2选一就能完成通信。
真不知道当初是咋设计的。
------其他解决方案--------------------
直接 Socket 连接网站,发完GET包就断开,效率最高
------其他解决方案--------------------
给楼主几个例子:
我想通过URL(GET)的方式提交数据,要连续提交几W次。
请问专家们,我如何才能只发出请求,而不需要知道请求的结果(是否成功)和服务器的返回结果,这应该如果实现?
另外,手头没有MSDN,CInternetSession::OpenURL函数、CHttpConnection::OpenRequest函数、CHttpFile::SendRequest函数,有什么区别呢?
谢谢大家!
------最佳解决方案--------------------
我实践下来
CInternetSession 这个一定需要
CHttpConnection和CHttpFile 2选一就能完成通信。
真不知道当初是咋设计的。
------其他解决方案--------------------
直接 Socket 连接网站,发完GET包就断开,效率最高
------其他解决方案--------------------
给楼主几个例子:
//=================================================================
#include <iostream.h>
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
bool InitSock();
//=================================================================
void main()
{
InitSock();
SOCKET httpsock = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
if (INVALID_SOCKET == httpsock)
{
cout<<"socket error !"<<endl;
WSACleanup( );
}
SOCKADDR_IN sock_addr = { 0 } ;
sock_addr.sin_family = AF_INET ;
sock_addr.sin_port = htons(80) ;
sock_addr.sin_addr.S_un.S_addr = inet_addr("119.75.217.109"); //获得的IP地址
int res = connect(httpsock , (sockaddr *)&sock_addr , sizeof(sockaddr));
if (res == SOCKET_ERROR)
{
cout<<"connect error !"<<endl;
closesocket(httpsock);
WSACleanup( );
}
char buf[] =
"GET /index.html HTTP/1.1\r\n"
"Cookie: BAIDUID=BC3ABCFD415152A40443C8D92282B796:FG=1\r\n" ; // cookie
"Host:http://www.baidu.com\r\n\r\n" ; // http请求头
int num = send( httpsock , buf , strlen(buf)+1 , 0 ) ;
if (SOCKET_ERROR == num)
{
cout<<"send error !"<<endl;
closesocket(httpsock);
WSACleanup( );
}
char recvbuf[2048] = {0} ;
while(1)
{
num = recv(httpsock , recvbuf , 2048 , 0);
if (SOCKET_ERROR == num)
{
break ;
}
else cout<<recvbuf;
memset(recvbuf , 0 ,2048);
}
closesocket(httpsock);
WSACleanup( );
}
//==================================================================
bool InitSock()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return false;
}
if ( LOBYTE( wsaData.wVersion ) != 2
------其他解决方案--------------------#include <iostream.h>
#include <string.h>
#include <afx.h>
#include <afxinet.h>
int main()
{
CInternetSession sess(_TEXT(""));
CHttpFile* file = (CHttpFile*)sess.OpenURL(_TEXT("http://www.baidu.com"));