VC post表单

参考文章:http://blog.youkuaiyun.com/wangningyu/article/details/4526551

注意:原文将回车换行符写成了/r/n,我使用时,程序异常,将其改成\r\n即可。

----------------------------------------------------------------------------------------------------------------------------------------------------------

html 登录页面截图:

---------------------------------------------------------------------------------------------------------------------

登录页面表单源码:

<form  action="/hyx/WanJiaLoginServlet" method="post">
		<label>账号:<span></span></label>
				<input  type="text"  name="userName" maxlength="20" value="zhang3"/>
			
		<label>密码:<span></span></label>
				<input type="password"  name="userPass" maxlength="30" value="123456"/>
			<input  type="submit"  value="登陆"  name="submit"  class="submit"/>
			<a href="wanjiaReg.jsp">注册</a>
			<a href="/hyx/index.html">首页</a>
</form>	

-----------------------------------------------------------------------------------------------------------------------------------------------------------------

点登录时,使用Fildder抓到的包如下:

POST http://407a08:8080/hyx/WanJiaLoginServlet HTTP/1.1
Host: 407a08:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://407a08:8080/hyx/wanjia/wanjiaLogin.jsp
Cookie: JSESSIONID=8DFF29BB78EEEE2FDE7CE3302B1821F7
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 31

userName=zhang3&userPass=123456

-------------------------------------------------------------------------------------------------------------------------------

点登录时,使用Fildder抓到的服务器返回的包如下:

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=A3EE2EA6D26871AD9E65B74E95A32FDE; Path=/hyx
Location: http://407a08:8080/hyx/wanjia/flex/index.html
Content-Length: 0
Date: Tue, 03 Jun 2014 12:11:57 GMT

---------------------------------------------------------------------------------------------------------------------------------

Fiddler抓包截图:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

清楚了提交给服务器的包,接下来可以写程序进行提交了,代码如下:

#include "stdafx.h"
#include "stdio.h" 
#include "winsock2.h"  
#include<stdlib.h>
#pragma   comment(lib,"ws2_32.lib")   

int main(int argc, char* argv[])
{
	SOCKADDR_IN	saServer;
	LPHOSTENT	lphostent;
	WSADATA		wsadata;
	SOCKET		hsocket;
	
	int		nRet;
	char*   host_name="192.168.47.18";
	char*   req=
		"POST http://407a08:8080/hyx/WanJiaLoginServlet   HTTP/1.1\r\n"
		"Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,\r\n"
		"Referer:http://192.168.47.17:8080/hyx/admin/login.jsp\r\n"
		"Accept-Language:zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n"
		"Content-Type:application/x-www-form-urlencoded\r\n"
		"Accept-Encoding:gzip, deflate\r\n"
		"User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0\r\n"   
		"Host:407a08:8080\r\n"
		"Content-Length:31\r\n"
		"Connection:keep-alive\r\n"
		"Cookie:JSESSIONID=F78B7D4C76181B5B08485246CE9FF8AE\r\n\r\n"
		"userName=zhang3&userPass=123456";

	// 初始化套接字
	if(WSAStartup(MAKEWORD(2,2),&wsadata))   
		printf("初始化SOCKET出错!");

	lphostent=gethostbyname(host_name);   
	if(lphostent==NULL)   
		printf("lphostent为空!");
	hsocket   =   socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);   
	saServer.sin_family = AF_INET;   
	saServer.sin_port = htons(8080);   
	//saServer.sin_addr = *((LPIN_ADDR)*lphostent->h_addr_list);
	saServer.sin_addr.S_un.S_addr=inet_addr(host_name);

	// 利用SOCKET连接
	nRet = connect(hsocket,(LPSOCKADDR)&saServer,sizeof(saServer));   
	if(nRet == SOCKET_ERROR)   
	{   
		printf("建立连接时出错!errorCode=%d ",WSAGetLastError());   
		closesocket(hsocket);   
		system("pause");
		return 0;   
	}

	// 利用SOCKET发送
	nRet = send(hsocket,req,strlen(req),0);
	if(nRet==SOCKET_ERROR)
	{
		printf("发送数据包时出错!");
		closesocket(hsocket);
		system("pause");
	}
	printf("发送数据包完毕!nRet=%d \n",nRet);

	char   Dest[3000];   
	nRet=1;   
	while(nRet>0)   
	{
		// 接收返回数据包
		nRet=recv(hsocket,(LPSTR)Dest,sizeof(Dest),0);   
		if(nRet>0)   
			Dest[nRet]=0;   
		else   
			Dest[0]=0;

		// 显示返回数据包的大小、内容
		printf("返回数据包的大小,nRet=%d \n",nRet);   
		printf("返回数据:%s \n",Dest);   
		
	}
	getchar();
	return 0;
}


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

效果截图如下:

-----------------------------------------------------------------------------------------------------------------------------------------


您的十分满意是我追求的宗旨。

您的一点建议是我后续的动力。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

friendan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值