社区
C语言
帖子详情
C语言如何用socket发送http请求 得到数据包?
小魔菇
2009-07-15 09:22:08
C语言如何用socket发送http请求 得到数据包?
有源码例子最好了
...全文
2796
19
打赏
收藏
C语言如何用socket发送http请求 得到数据包?
C语言如何用socket发送http请求 得到数据包? 有源码例子最好了
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ctroll
2011-07-19
打赏
举报
回复
[Quote=引用 14 楼 eclipse_2 的回复:]
引用 12 楼 lemirymoo 的回复:
你可以把
GET / HTTP/1.1\r\n\r\n
发送给http://www.baidu.com/
会得到类似下面的东西,上面的是请求头,下面的是内容。Http响应数据包可能会分多次发回来,所以不要只看一个数据包。
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 02:56:45 GMT
Ser……
[/Quote]
循环取。
char dest[1000];
nRet=1;
while(nRet>0)
{
nRet=recv(hsocket,(LPSTR)dest,sizeof(dest),0);
if(nRet>0)
dest[nRet]=0;
else
dest[0]=0;
printf("\nReceived bytes:%d\n",nRet);
printf("Result:\n%s",dest);
}
renxiaowen
2010-07-15
打赏
举报
回复
楼主好。。我最近也在研究类似的问题,我想加你QQ好友请教你一下。。。麻烦你了
小魔菇
2009-11-26
打赏
举报
回复
加我Q
312134065
deping_lin
2009-11-26
打赏
举报
回复
楼主你好,我最近也在学socket发送http的请求。能不能把你的代码给我学习一下呢?
lemirymoo
2009-10-26
打赏
举报
回复
Content-Length 中的数字就是正文长度,从\r\n\r\n 后面开始量这么多个长度就是数据末尾了。
小魔菇
2009-07-15
打赏
举报
回复
[Quote=引用 12 楼 lemirymoo 的回复:]
你可以把
GET / HTTP/1.1\r\n\r\n
发送给http://www.baidu.com/
会得到类似下面的东西,上面的是请求头,下面的是内容。Http响应数据包可能会分多次发回来,所以不要只看一个数据包。
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 02:56:45 GMT
Server: BWS/1.0
Content-Length: 3397
Content-Type: text/html
Cache-Control: private
Expires: Wed, 15 Jul 2009 02:56:45 GMT
Set-Cookie: BAIDUID=976BA6BFA22EB89BB…
[/Quote]
如何判断从服务端的数据接收完成了呢?
小魔菇
2009-07-15
打赏
举报
回复
是我错了
程序有问题
已经找出来了
lemirymoo
2009-07-15
打赏
举报
回复
你可以把
GET / HTTP/1.1\r\n\r\n
发送给http://www.baidu.com/
会得到类似下面的东西,上面的是请求头,下面的是内容。Http响应数据包可能会分多次发回来,所以不要只看一个数据包。
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 02:56:45 GMT
Server: BWS/1.0
Content-Length: 3397
Content-Type: text/html
Cache-Control: private
Expires: Wed, 15 Jul 2009 02:56:45 GMT
Set-Cookie: BAIDUID=976BA6BFA22EB89BB49FEC0552EE7636:FG=1; expires=Wed, 15-Jul-3
9 02:56:45 GMT; path=/; domain=.baidu.com
P3P: CP=" OTI DSP COR IVA OUR IND COM "
<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312"><ti
tle>百度一下,你就知道 </title><style>body{margin:4px 0}p{margin:0;padding:
0}img{border:0}td,p,#u{font-size:12px}#b,#u,#l td,a{font-family:arial}#kw{font:1
6px Verdana;height:1.78em;padding-top:2px}#b{height:30px;padding-top:4px}#b,#b a
{color:#77c}#u{padding-right:10px;line-height:19px;text-align:right;margin:0 0 3
px !important;margin:0 0 10px}#sb{height:2em;width:5.6em}#km{height:50px}#l{marg
in:0 0 5px 15px}#l td{padding-left:107px}p,table{width:650px;border:0}#l td,#sb,
#km{font-size:14px}#l a,#l b{margin-right:1.14em}a{color:#00c}a:active{color:#f6
0}#hp{position:absolute;margin-left:6px}#lg{margin:-26px 0 -44px}#lk{width:auto;
line-height:18px;vertical-align:top}form{position:relative;z-index:9}</style></h
小魔菇
2009-07-15
打赏
举报
回复
[Quote=引用 9 楼 lemirymoo 的回复:]
才看明白你要的是客户端,
那你就发
GET [URL] HTTP/1.1\r\n\r\n
有这一行就足够了 。
[/Quote]
只能得到数据头
正文得不到
小魔菇
2009-07-15
打赏
举报
回复
[Quote=引用 7 楼 lemirymoo 的回复:]
下面代码能够演示出大概意思。你用socket把buff送回客户端就成了。
char *head = "HTTP/1.1 200 OK\r\nContent-Length: %u\r\n\r\n%s";
char *p = " <html> <head> <title>标题 </title> </head> <body>正文 </body> </html>";
char buff[4096];
sprintf(buff,head,strlen(p),p);
[/Quote]
我是从一个客户端向一个网站发送http请求的
服务端我操作不了哈
lemirymoo
2009-07-15
打赏
举报
回复
才看明白你要的是客户端,
那你就发
GET [URL] HTTP/1.1\r\n\r\n
有这一行就足够了 。
小魔菇
2009-07-15
打赏
举报
回复
[Quote=引用 6 楼 lemirymoo 的回复:]
找个rfc2616按那里面说的发消息就成了。
我用MinGW做过Http服务器,并且实现了C语言做动态网页,虽然很简陋,但毕竟是实现了。
做Http服务器端程序,只要有rfc2616就足够了。
其中请求头中最重要的是第一行 GET [URL] HTTP/1.1\r\n
响应头最重要的是响应代码和正文长度。
如果你只是很简单地做,那我推荐你这样写响应头
HTTP/1.1 200 OK\r\n
Content-Length:[正文长度]\r\n\r\n
[正文]
其中的正文长度就是…
[/Quote]
我是用一个抓包工具 按照上面的格式写的
可以得到数据 不过只能收到数据头部信息
其他的正文信息收不到
lemirymoo
2009-07-15
打赏
举报
回复
下面代码能够演示出大概意思。你用socket把buff送回客户端就成了。
char *head = "HTTP/1.1 200 OK\r\nContent-Length: %u\r\n\r\n%s";
char *p = "<html><head><title>标题</title></head><body>正文</body></html>";
char buff[4096];
sprintf(buff,head,strlen(p),p);
lemirymoo
2009-07-15
打赏
举报
回复
找个rfc2616按那里面说的发消息就成了。
我用MinGW做过Http服务器,并且实现了C语言做动态网页,虽然很简陋,但毕竟是实现了。
做Http服务器端程序,只要有rfc2616就足够了。
其中请求头中最重要的是第一行 GET [URL] HTTP/1.1\r\n
响应头最重要的是响应代码和正文长度。
如果你只是很简单地做,那我推荐你这样写响应头
HTTP/1.1 200 OK\r\n
Content-Length:[正文长度]\r\n\r\n
[正文]
其中的正文长度就是从[正文]部分的长度,其中不包括请求头。
HTTP协议规定,请求头中的换行符是\r\n而不是\n这一点要注意。
一般来说这样写的请求头就能够正常浏览了。
小魔菇
2009-07-15
打赏
举报
回复
[Quote=引用 4 楼 NKLoveRene 的回复:]
找个抓包工具抓一下数据包
看http头是怎么组成的
然后照着自己写个字符串,用socket发出去,然后再收一下,就得到数据包了
[/Quote]
为什么我只能得到数据包的头部
其他的数据得不到?
NKLoveRene
2009-07-15
打赏
举报
回复
找个抓包工具抓一下数据包
看http头是怎么组成的
然后照着自己写个字符串,用socket发出去,然后再收一下,就得到数据包了
icefairy
2009-07-15
打赏
举报
回复
mark
Nio96
2009-07-15
打赏
举报
回复
有人讲过。。。
http://blog.csdn.net/wbczyh/archive/2008/02/24/2117094.aspx
SIJIMO
2009-07-15
打赏
举报
回复
http://topic.csdn.net/u/20090217/15/4a5878d8-5019-4be0-b5c2-b6977a38dcd7.html
c语言
socket
编程指南
###
C语言
Socket
编程指南#### 1. 什么是
Socket
?
Socket
是一种用于进程间通信的机制,它为应用程序之间的数据交换提供了便利。
使用
C语言
实现HTTP POST请求与Json数据交互
HTTP POST方法是一种请求方式,用于将数据
发送
到服务器以创建新的资源。与GET方法不同,它不将数据附加在URL后,而是放入请求体中,这使得POST更适合传输敏感数据和大量数据。了解HTTP POST方法是构建现代Web应用的基础之一。
Socket
是网络通信的基石,它提供了一套标准的API接口,使得应用程序能够使用网络协议栈进行通信。在
C语言
中,
socket
API为不同类型的网络通信提供了支持,比如TCP、UDP和原始套接字。
Socket
API主要包含以下操作:套接字创建。
c语言
socket
编程-超级完整.doc
###
c语言
socket
编程知识点#### 1. 什么是
Socket
?
Socket
是一种用于进程间通信的机制,允许不同计算机上的应用程序相互通信。
Socket
Socket
详细介绍,C++,原理
### 结论
Socket
作为一种基础的网络编程技术,在现代互联网开发中占据着极其重要的地位。无论是C/C++还是其他语言,掌握
Socket
的基本原理及其使用方法都是必不可少的。
iOS-面试宝典3.0.pdf
客户端
发送
一个带有SYN标志的
数据包
给服务器。2. 服务器收到SYN包后回应一个SYN+ACK包给客户端。3. 客户端收到SYN+ACK包后,再
发送
一个ACK包确认连接建立完成。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章