/********************************************/
/* POST提交数据
/* by xicao from SEU
/* post.c */
/********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <winsock.h>
#pragma comment(lib,"ws2_32.lib")
int InitSocket();
u_long Name2Inet(char* szAddress);
int main(int argc,char *argv[])
{
char buff[1024];
SOCKET sock;
SOCKADDR_IN addr;
int postlen;
char* url="127.0.0.1";//这个自己修改
if (argc!=3)
{
printf("Error!\n");
return 0;
}
postlen=(strlen(argv[1])+strlen(argv[2])+19);
_snprintf(buff, 4096, "POST http://%s/pass.asp HTTP/1.1\r\n"
// "Accept: */*\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n" //貌似这句不能丢
"Host: %s\r\n"
"Content-Length: %d\r\n" //指post的数据长度
"\r\n"
"QQNumber=%s&PassWord=%s\r\n",
url,
url,
postlen,
argv[1],
argv[2]);
if(!InitSocket())
{
printf("Winsock Initialization failed.\n");
return 0;
}
if ((sock=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
{
printf("Can not create socket.\n");
return 0;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(80);
addr.sin_addr.s_addr=Name2Inet(url);
if (connect(sock,(LPSOCKADDR)&addr,sizeof(addr))==SOCKET_ERROR)
{
printf("Can not connect to specified host.\n"); return -1;
}
send(sock,buff,strlen(buff),0);
closesocket(sock);
return 0;
}
int InitSocket()
{
#define MAJOR_VERSION 1
#define MINOR_VERSION 2
int nStatus = 0;
WORD wMajorVersion = MAJOR_VERSION;
WORD wMinorVersion = MINOR_VERSION;
WORD wVersionReqd = MAKEWORD(wMajorVersion, wMinorVersion);
WSADATA lpmyWSAData;
nStatus =WSAStartup(wVersionReqd, &lpmyWSAData);
if(nStatus != 0)
{
return 0;
}
return 1;
}
u_long Name2Inet(char* szAddress)
{
int name=0;
int i=0;
if(szAddress==NULL||strlen(szAddress)<1)
{
return htonl(INADDR_ANY);
}
for (i=0;szAddress;i++)
{
if((!isdigit(szAddress))&&szAddress!='.')
{
name=1;break;
}
}
//不是计算机名,是IP
if(!name)
return inet_addr(szAddress);
//是计算机名
else
{
struct hostent*host=gethostbyname(szAddress);
if(host==NULL)
{
return htonl(INADDR_ANY);
}
return *(long*)host->h_addr;
}
}
附件
src.rar (17.99 KB)