- 论坛徽章:
- 0
|
回复 #3 Sorehead 的帖子
出来了,多谢, 贴出来与大家共享 www.mawudi.cn
WORD wVersionRequested;
WSADATA wsaData;
int err;
content.erase();
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return 2;
}
this->SocketClient=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in clientService;
clientService.sin_addr.S_un.S_addr=inet_addr( this->ipaddr.c_str() );
clientService.sin_family=AF_INET;
clientService.sin_port=htons(this->port);
if ( connect(this->SocketClient, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)
{
WSACleanup();
return 3;
}
char c_length[200];
char RecvBuffer[6000];
string bodyBuffer = "action=login&username=netmwd&userpwd=netmwd";
size_t length = bodyBuffer.size();
sprintf(c_length, "%d", length);
string s_length=c_length;
string headerBuffer = "POST /" + this->request_url + " HTTP/1.1\r\n";
headerBuffer += "keep-alive: 300\r\n";
headerBuffer += "Connection: Keep-Alive\r\n";
headerBuffer += "Host:" + this->domain +"\r\n";
headerBuffer += "Content-Type: application/x-www-form-urlencoded\r\n";
headerBuffer += "Content-Length: " + s_length + "\r\n\r\n";
send(this->SocketClient, (headerBuffer + bodyBuffer).c_str(), strlen((headerBuffer + bodyBuffer).c_str()), 0);
while(1)
{
int result = recv(this->SocketClient, RecvBuffer, 1024, 0);
if ( result <= 0 )
break;
RecvBuffer[result] = '\0';
content.append(RecvBuffer);
}
closesocket(this->SocketClient);
this->SocketClient=socket(AF_INET,SOCK_STREAM,0);
if ( connect(this->SocketClient, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR)
{
WSACleanup();
return 3;
}
int pos = content.find("PHPSESSID=");
int pos2 = content.find(";",pos);
string phpsessid = content.substr(pos+strlen("PHPSESSID="), pos2-pos-strlen("PHPSESSID="));
string sendBuffer="GET /get_post.php HTTP/1.1\r\n";
sendBuffer += "Host:" + this->domain +"\r\n";
sendBuffer += "Cookie: PHPSESSID=" + phpsessid + "\r\n";
sendBuffer += "Connection: close\r\n\r\n";
send(this->SocketClient, sendBuffer.c_str(), strlen(sendBuffer.c_str()), 0);
char RecvBuffer2[6000];
while(1)
{
int result = recv(this->SocketClient, RecvBuffer2, 5300, 0);
cout << GetLastError() << endl;
if ( result <= 0 )
break;
RecvBuffer2[result] = '\0';
content.append(RecvBuffer2);
}
closesocket(this->SocketClient);
WSACleanup(); |
|