[iPhone-APP]基于Socket+Http打造自己的浏览器Demo

简单讲述基于BSD Socket + Http 协议。打造自己的浏览器。

BSD Socket,不多说的,有机会详细参考网上有很多详细的讲解的。

本例通过组一个Http报文,发送到指定的服务器中,得到相应的返回值。本人使用的是www.baidu.com,作为试验。

 

1。 

下载fiddler,安装。这是一个抓报工具。安装结束,打开fiddler2,打开浏览器。把尽可能访问网络的东西关掉。晴空fiddler2里面纪录,然后浏览器地址栏输入www.baidu.com,进入,之后搜索一个关键字,例如,alexliu,然后看包是如何发送的。 发现使用的是GET方法,关键字通过编码方式转换,然后有如下请求。

is :GET http://www.baidu.com/s?wd=alexliu HTTP/1.1

Host:www.baidu.com 

于是自行组一个Header。记得末尾有两个回车换行。“\r\n" 

 

2。

域名解析成IP地址。

        struct hostent *host = gethostbyname([theHost UTF8String]); 

if(!host)

{

herror("resolv");

return NULL;

}

struct in_addr **list = (struct in_addr **)host->h_addr_list;

NSString *address = [NSString stringWithCString:inet_ntoa(*list[0])];

return address; 

 

3。

通过Socket系统提供的接口,进行发送和接受。

 

                their_addr.sin_family = AF_INET;

their_addr.sin_addr.s_addr = inet_addr(/* 自己解析IP去吧*/);

                      //80端口 

their_addr.sin_port = htons(80);

bzero(&(their_addr.sin_zero), 8);

int conn = connect(sockfd, (struct sockaddr*)&their_addr, sizeof(struct sockaddr));

                //连接

if(conn != -1)

{

NSLog(@"Then the conn is not -1!");

NSMutableString* httpContent = [self makeHttpHeader:hostName];

                        //这个地方Data需要自己把HTTP那个Header进行加工。

ssize_t dataSended = send(sockfd, [data bytes], [data length], 0);

                                  // readBuffer 大小自行定义。 

int br = 0;

                                  //receive 需要一直取到定义的大小为止,循环部分按需要的加

br = recv(sockfd, readBuffer, sizeof(readBuffer), 0); 

                       } 

4。显示。顺便上2个小图。 

                       首先输入搜索需求

                        

                        搜索结果太多了,可以滚动,但是返回的仍然是很多乱七八糟的。。要是有个IEDeveloper 或者fireDebug之类的东西就好了。我这个只能显示纯文本。。

 

5。有了回来的HTTP+XML文件

自行使用好用的Parser 之类的解析,然后再来点控件,显示到控件上面。浏览器就能面世了。。:) 

 


 防止盗链,正文要mark

 http://alexliu.cnblogs.com

 

 

 

weixin063传染病防控宣传微信小程序系统的设计与实现+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值