社区
C语言
帖子详情
C语言如何用socket发送http请求 得到数据包?
小魔菇
2009-07-15 09:22:08
C语言如何用socket发送http请求 得到数据包?
有源码例子最好了
...全文
2728
19
打赏
收藏
C语言如何用socket发送http请求 得到数据包?
C语言如何用socket发送http请求 得到数据包? 有源码例子最好了
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
编写。
C语言
Socket
简单编程指南
C语言
Socket
简单编程指南,看完基本会用,包含很详细的函数解析!
c语言
Socket
编程
c语言
Socket
编程 非常实用 address结构都有
【精品】:
c语言
socket
实现主机与客户端异步通信.doc
【精品】:
c语言
socket
实现主机与客户端异步通信
c语言
实现
socket
.docx
c语言
实现
socket
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章