网络笔记01-3 socket 实现百度页面的两种方式
scoket 实现百度页面的两种方式:
1.利用系统自带
//1.创建URL
NSURL *url=[NSURL URLWithString:@"http://m.baidu.com"];
//2.创建请求
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];
[request setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User-Agent"];
//3.发送
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSString *html=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
[self.webView loadHTMLString:html baseURL:url];
}];
2.利用socket
- (void)viewDidLoad {
[super viewDidLoad];
if ([self connectWith:@"61.135.185.17" withHton:80]) {
NSLog(@"error");
return;
}
NSLog(@"OK");
NSString *request=@"GET / HTTP/1.1\r\n"
"Host: m.baidu.com\r\n"
"User-Agent: iPhone AppleWebKit\r\n"
"connection: Close\r\n\r\n";
NSString *result = [self sendAndRevi:request];
NSRange range=[result rangeOfString:@"\r\n\r\n"];
if (range.location !=NSNotFound) {
NSString *html=[result substringFromIndex:range.location];
[self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"m.baidu.com"]];
}
}
- (NSString *)sendAndRevi:(NSString *)request{
//注意:send的第三个值用strlen 不是sizeof
send(self.clientsocket, request.UTF8String, strlen(request.UTF8String), 0);
uint8_t buffer[1024];
ssize_t recvLen = -1;
NSMutableData *dataM = [NSMutableData data];
while (recvLen !=0) {
recvLen= recv(self.clientsocket, buffer, sizeof(buffer), 0);
[dataM appendBytes:buffer length:recvLen];
}
NSString *str = [[NSString alloc]initWithData:dataM encoding:NSUTF8StringEncoding];
return str;
}
- (BOOL)connectWith:(NSString *)addr withHton:(int)hton{
// 1.scoke
self.clientsocket = socket(AF_INET, SOCK_STREAM, 0);
// 2.connect;
struct sockaddr_in serverAddress;
serverAddress.sin_family=AF_INET;
serverAddress.sin_addr.s_addr=inet_addr(addr.UTF8String);//这个方法会是地址翻转,翻转后的地址为所请求的地址
serverAddress.sin_port=htons(hton);//根据IP地址查找端口
return connect(self.clientsocket, (const struct sockaddr *)&serverAddress, sizeof(serverAddress));
}
ps.这个是前两节所讲的概念进行实际的演练,如果有什么概念不懂的地方可以看下前两个博客的概念,如果还有的不懂的,可以留言,会在第一时间回复的
网络笔记01-3 socket 实现百度页面的两种方式的更多相关文章
- WebView加载页面的两种方式——网络页面和本地页面
WebView加载页面的两种方式 一.加载网络页面 加载网络页面,是最简单的一种方式,只需要传入http的URL就可以,实现WebView加载网络页面 代码如下图: 二.加载本地页面 1.加载asse ...
- JS实现把一个页面层数据传递到另一个页面的两种方式
本博客整理了两种方式从一个页面层向另一个页面层传递参数. 一. 通过cookie方式 1. 传递cookie页面的html,此处命名为a.html 请输入用户名和密码: <input id=&q ...
- selenium中webdriver跳转新页面后定位置新页面的两种方式
刚刚在写Python爬虫的时候用到了selenium , 在跳转新页面时发现无法定位新页面 , 查找不到新页面的元素 一番查询后得到了解决方法 , 便记录下来备忘 , 也与大家分享 # 页面跳转代码. ...
- springMVC使用jsp:include嵌入页面的两种方式
1.静态嵌入子页面 <%@ include file="header.jsp" %> 静态嵌入支持 jsp . html . xml 以及纯文本. 静态嵌入在编译时 ...
- 获取页面URL两种方式
以请求http://localhost:8080/doctor/demo?code=1为例 一:用java代码获取 //获取URL中的请求参数.即?后的条件 code=1 String querySt ...
- 【代码笔记】iOS-向服务器传JSON数据的两种方式
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. ...
- Cocos2d-x学习笔记(五岁以下儿童) 精灵两种方式播放动画
这几天在看控件类,临时没有想好实际运用的方向.单纯的创建网上已经有非常多这方面的样例,我就不写了.接下来是学习精灵类.精灵类若是单独学习也是非常easy.于是我加了一些有关动画方面的知识点与精灵 ...
- SpringMVC 重定向到其他系统的页面的两种方式
//测试重定向到另外的一个系统 @RequestMapping("/tttt") public void testRed(HttpServletResponse response) ...
- JSP错误页面处理的两种方式
JSP错误页面处理的两种方式: 方法1(真能针对单一页面生效,不推荐): 出错页面实例 <%@ page language="java" contentType=" ...
随机推荐
- FreeBSD 安裝 Tomcat JAVA JDK1.6 筆記
首先是安裝軟體 cd /usr/ports/java/jdk16/ make 在這一步,需要你手動到sun.com上下載幾個安裝包,按提示下載好後加入到 /usr/ports/distfiles/,再 ...
- 数据库知识(主要基于Oracle,Sql可参考)
1.关于Union的知识 select 11 from dual union select 11 from dual 和 select 11 from dual union all select 11 ...
- 常见的Activity Action Intent常量
Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”. 目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter&g ...
- 十、Notepad++正则表达式使用
推荐个正则表达式在线测试的工具http://ccmpp.com/Regex/ Notepad++正则表达式使用 2011-01-06 10:01:35| 分类: 文档 | 标签:正则表达式 替换 no ...
- php生成 优惠券 激活码
/** * 生成vip激活码 * @param int $nums 生成多少个优惠码 * @param array $exist_array 排除指定数组中的优惠码 * @param int $cod ...
- 标识域 Identify Field
在对象中保存DB的ID字段,以维持内存对象和DB数据Row之间的identify. 关系DB使用key来区分数据行. 而内存对象不需要这样的键.因为对象系统能够保证身份确认. 读取时没有问题,但是为了 ...
- usb2.0 规范学习笔记
1.一个USB HOST 最多可以同时支持128 个地址,地址0 作为默认地址,只在设备枚举期间临时使 用,而不能被分配给任何一个设备,因此一个USB HOST 最多可以同时支持127 个地址,如果一 ...
- Php 与 Json
PHP与JSON 在PHP中存在两个与JSON相关的函数: json_encode($array或$object)函数:把一个数组或对象转化为JSON格式的字符串 json_decode($json, ...
- 暑假集训(4)第五弹——— 数论(hdu1222)
题意概括:那天以后,你好说歹说,都快炼成三寸不烂之舍之际,小A总算不在摆着死人脸,鼓着死鱼眼.有了点恢复的征兆.可孟子这家伙说的话还是有点道理,那什么天将降....额,总之,由于贤者法阵未完成,而小A ...
- 阿里巴巴2013年实习生笔试题A
一.单项选择题 1.下列说法不正确的是:(B) A.SATA硬盘的速度速度大约为500Mbps/s B.读取18XDVD光盘数据的速度为1Gbps C.前兆以太网的数据读取速度为1Gpbs D.读取D ...