社区
网络编程
帖子详情
如何用SOCKET编程实现POST数据到WEB服务器,并取得返回数据
iuhxq
2004-08-26 09:17:09
不要用http://dev.csdn.net/develop/article/11/11914.shtm这里提到的方式
只要用socket实现的,这样即可以学socket有可以解决问题,呵呵
...全文
580
10
打赏
收藏
如何用SOCKET编程实现POST数据到WEB服务器,并取得返回数据
不要用http://dev.csdn.net/develop/article/11/11914.shtm这里提到的方式 只要用socket实现的,这样即可以学socket有可以解决问题,呵呵
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iuhxq
2004-08-27
打赏
举报
回复
小弟我实在菜,能否把代码发给我?
iuhxq@hotmail.com
谢谢!
xdljf
2004-08-26
打赏
举报
回复
修正一下
sprintf(szBuffer, "GET %s HTTP/1.1\r\n", lpFileName);
看看flashget是怎么玩的,参考资料http://www.ietf.org/rfc/rfc2068.txt
Mon Jul 26 11:02:20 2004 正在连接代理服务器 127.0.0.1 [IP=127.0.0.1:1040]
Mon Jul 26 11:02:20 2004 已连接.
Mon Jul 26 11:02:20 2004 Socks: 05 01
Mon Jul 26 11:02:20 2004 Socks: 05 00
Mon Jul 26 11:02:20 2004 Socks: 05 01
Mon Jul 26 11:02:21 2004 Socks: 05 00
Mon Jul 26 11:02:21 2004 GET /down/beta_SocksOnlineV2.zip HTTP/1.1
Mon Jul 26 11:02:21 2004 Host: crc.onlinedown.net
Mon Jul 26 11:02:21 2004 Accept: */*
Mon Jul 26 11:02:21 2004 Referer: http://crc.onlinedown.net/down
Mon Jul 26 11:02:21 2004 User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)
Mon Jul 26 11:02:21 2004 Pragma: no-cache
Mon Jul 26 11:02:21 2004 Cache-Control: no-cache
Mon Jul 26 11:02:21 2004 Connection: close
Mon Jul 26 11:02:21 2004 HTTP/1.1 200 OK
Mon Jul 26 11:02:21 2004 Server: Microsoft-IIS/5.0
Mon Jul 26 11:02:21 2004 Connection: close
Mon Jul 26 11:02:21 2004 Date: Mon, 26 Jul 2004 02:59:24 GMT
Mon Jul 26 11:02:21 2004 Content-Type: application/x-zip-compressed
Mon Jul 26 11:02:21 2004 Accept-Ranges: bytes
Mon Jul 26 11:02:21 2004 Last-Modified: Tue, 13 Apr 2004 03:09:13 GMT
Mon Jul 26 11:02:21 2004 ETag: "9e17cfb2421c41:934"
Mon Jul 26 11:02:21 2004 Content-Length: 351209
Mon Jul 26 11:02:21 2004 开始接受数据!
Mon Jul 26 11:02:25 2004 User Cancel at 165414.
oyljerry
2004-08-26
打赏
举报
回复
一个get的,看有没有帮助
SOCKET Socket;
Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (Socket == INVALID_SOCKET)
{
PRINTERROR("socket()");
return;
}
//
// Find the port number for the HTTP service on TCP
//
LPSERVENT lpServEnt;
SOCKADDR_IN saServer;
lpServEnt = getservbyname("http", "tcp");
if (lpServEnt == NULL)
saServer.sin_port = htons(80);
else
saServer.sin_port = lpServEnt->s_port;
//
// Fill in the rest of the server address structure
//
saServer.sin_family = AF_INET;
saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
//
// Connect the socket
//
int nRet;
nRet = connect(Socket, (LPSOCKADDR)&saServer, sizeof(SOCKADDR_IN));
if (nRet == SOCKET_ERROR)
{
PRINTERROR("connect()");
closesocket(Socket);
return;
}
//
// Format the HTTP request
//
char szBuffer[1024];
sprintf(szBuffer, "GET %s\n", lpFileName);
nRet = send(Socket, szBuffer, strlen(szBuffer), 0);
if (nRet == SOCKET_ERROR)
{
PRINTERROR("send()");
closesocket(Socket);
return;
}
purplelucy
2004-08-26
打赏
举报
回复
借楼主的地盘问一句。用POST方式发送数据时,正文数据的包装规则是什么呢?是不是空格以加号代替,特殊字符用ASCII码?那么中文该怎么弄呢?
Mycro
2004-08-26
打赏
举报
回复
我也有同样的问题,
能否远程操作Access 的数据库?
JJONY
2004-08-26
打赏
举报
回复
其实用SOCKET实现POST是一件比较简单的事件, 首先你要搞清楚HTTP协议的运作原理,具体的我就忘了, 在网上找找吧。 不过大概是HTTP协议都是以字符串传输。 也就是说客户端写上含“POST”格式的HTTP字符串发送到服务器端,然后等回应就得了。回应也是字符串,难点是你要把服务器的回应字符串中的字段进行解释。可能会受到网络速率问题,回应数据要分成多次的Recv接收,要做成IE那种边接收边显示,好难哦。
还有一个难点就是如果你有二进制数据如文件,那么要把它编码成BASE64,不过这个都可以在网上找到代码。
DentistryDoctor
2004-08-26
打赏
举报
回复
你这个的Post是什么意思?
sunshinee
2004-08-26
打赏
举报
回复
楼上几位已经说得很详细了,提醒一下,就是http中head和body之间是有一个空行的。
醉马不肖
2004-08-26
打赏
举报
回复
用siffer抓一些包,不就ok
purplelucy
2004-08-26
打赏
举报
回复
偶来写一段,自己收到想要的返回的信息了。不知道对楼主有点提示没有。
构造发送包:
CString StrSend;
StrSend.Format("POST /accessinterface.php HTTP/1.1\r\nHost: %s\r\n",hostip); //方法、请求的页面、HTTP版本、主机名
CString strtemp;
strtemp.Format("Referer: http://%s/index.asp\r\n",hostip);//Referer页面
StrSend += strtemp;
StrSend += "Accept:*/*\r\n"; //接受的数据类型
StrSend += "Accept-Language: zh-cn\r\n";//Accept-Language
StrSend += "Content-Type: application/x-www-form-urlencoded\r\n";
StrSend += "Accept-Encoding: gzip, deflate\r\n";
StrSend += "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n";
StrSend += "Connection: Keep-Alive\r\n";
CString datasend;
//这是正文的数据,类似这样的格式提交给页面上的参数。哎呀,自己不会说。
datasend.Format("userID=%s&filename=%s&command=read&result=&reserved=1",
userID,filename);
int nLength = datasend.GetLength();
strtemp = "";
strtemp.Format("Content-Length: %d\r\n",nLength);
StrSend += strtemp; //发送内容的长度
StrSend += "\r\n"; //空行标志请求头的结束
StrSend +=datasend; //发送的数据段内容
后面就是send...
然后recv。。。分析收到的结果。这个不要说了吧。
基于 Socket 和 HTTP协议
实现
简单的
Web
服务器
本文介绍了一个基于HTTP/1.0版本的简易
Web
服务器
的设计与
实现
,涵盖了基本的GET和
POST
请求处理、差错处理以及简单的CGI程序支持等功能。
PHP网络编程实战:SOCKET模拟
POST
消息提交
本文聚焦于PHP网络编程,详细介绍用PHP的SOCKET功能模拟
POST
消息提交的过程。涵盖网络通信基础、SOCKET功能概述、创建连接、构造HTTP头和
数据
体、发送
数据
、接收响应以及关闭连接等步骤,还给出源码实例分析,助开发者提升解决网络通信问题的能力。
http协议和使用socket
实现
静态
web
服务器
本文深入解析HTTP协议的工作原理,包括请求与响应过程,并通过
Socket编程
实现
静态
Web
服务器
,展示了如何处理客户端请求,
返回
指定页面,以及多线程和面向对象版本的
服务器
实现
。
用Java Socket手撸了一个HTTP
服务器
本文介绍了如何使用Java的
Socket编程
实现
一个简单的HTTP
服务器
,包括
服务器
Socket的使用、HTTP协议解析以及请求和响应的处理。作者详细讲解了HTTP请求和响应的结构,以及如何解析和构建HTTP消息。
计网实验A3:简单的
web
服务器
本文介绍了如何使用
Socket编程
接口
实现
一个简单的
Web
服务器
,涉及TCP连接、HTTP协议的基本知识。实验要求
服务器
接收HTTP请求,解析文件路径,
返回
文件内容或404NotFound错误。通过监听、接受连接、处理请求和响应,
服务器
实现
了基本的
Web
服务功能。实验中,
服务器
处理了请求解析、文件读取和HTTP响应构造。,
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章