Apache连接本地自定义站点服务器
2016-05-17 15:32
537 查看
研究了一天的Apache的连接方式,到现在为止,研究的差不多了,主要是对写后台的不太好搞定,但是,到现在为止收获颇多,现在先歇一歇我今天的收获吧!
其实主要分为两种状态,一种是直接访问服务器里面的文件,或者网站;一种是连接服务器并读取服务器里面的数据;
第一种:直接访问服务器里面的文件
直接访问服务器里面的文件用作按钮的背景色、读取服务器里面的H5文件;
这种直接访问的方法很简单的,直接网络请求就好:
按钮背景:
读取H5
效果图:
![](http://img.blog.csdn.net/20160517151741276)
第二种连接服务器读取里面的文件大概有点像小小的聊天交互
{
NSInputStream *inputStream;
NSOutputStream *outStream;
}
输入输出流使用到的代理是:
1、连接服务器:
监听方法:这个方法中出现错误最多的就是连接出现错误,但是一般情况下就是检查端口号是否正确,其他的基本不用管的,在此,使用的是默认端口号,如果不想使用默认端口号的,请先修改了端口号后在进行开发!
这个方法基本没用,这里只是拿出来进行说明一下
读了服务器返回的数据
该方法本是用于聊天的,布置消息界面的
顺便再加一个无用的方法——————懒加载
//懒加载数组
其实主要分为两种状态,一种是直接访问服务器里面的文件,或者网站;一种是连接服务器并读取服务器里面的数据;
第一种:直接访问服务器里面的文件
直接访问服务器里面的文件用作按钮的背景色、读取服务器里面的H5文件;
这种直接访问的方法很简单的,直接网络请求就好:
按钮背景:
NSURL *url=[NSURL URLWithString: @"http://127.0.0.1/icon_route_car.png"]; NSData *data=[NSData dataWithContentsOfURL:url]; Button.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithData:data]];
读取H5
UIWebView *web =[[UIWebView alloc]initWithFrame:CGRectMake(0, 120, CGRectGetWidth([UIScreen mainScreen].bounds), CGRectGetHeight([UIScreen mainScreen].bounds)-120)]; NSURL *weburl=[NSURL URLWithString: @"http://127.0.0.1/index.html"]; [web loadRequest:[NSURLRequest requestWithURL:weburl]]; [self.view addSubview:web]; web.delegate = self;
效果图:
第二种连接服务器读取里面的文件大概有点像小小的聊天交互
{
NSInputStream *inputStream;
NSOutputStream *outStream;
}
输入输出流使用到的代理是:
NSStreamDelegate
1、连接服务器:
- (void)inputStreamAction:(UIButton *)sender{ //服务器地址 NSString *host = @"127.0.0.1"; //端口号 默认的是80 但是也可以修改的 具体如何修改在此不做说明 找度娘吧 int port = 80; //定义C语言输入输出流 CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, &readStream, &writeStream); //把C语言的输入输出流转换成OC对象 inputStream = (__bridge NSInputStream *)(readStream); outStream = (__bridge NSOutputStream *)(writeStream); //设置代理 inputStream.delegate = self; outStream.delegate = self; //把输入输出流添加到主循环 //不添加到主运行循环 代理有可能不工作 [inputStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [outStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; //打开输入输出流 [inputStream open]; [outStream open]; }
监听方法:这个方法中出现错误最多的就是连接出现错误,但是一般情况下就是检查端口号是否正确,其他的基本不用管的,在此,使用的是默认端口号,如果不想使用默认端口号的,请先修改了端口号后在进行开发!
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{ NSLog(@"%@",aStream.streamError); switch (eventCode) { case NSStreamEventOpenCompleted: NSLog(@"输入输出流打开成功"); break; case NSStreamEventHasBytesAvailable: NSLog(@"有字节可读"); [self readData]; break; case NSStreamEventHasSpaceAvailable: NSLog(@"可以发送字节"); break; case NSStreamEventErrorOccurred: NSLog(@"连接出现错误"); break; case NSStreamEventEndEncountered: NSLog(@"连接结束"); //关闭输入输出流 [inputStream close]; [outStream close]; //移除主循环 [inputStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; [outStream removeFromRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; break; default: break; } }
这个方法基本没用,这里只是拿出来进行说明一下
- (void)LoginInputStreamAction:(UIButton *)sender{ //登录 //发送用户名和密码 //只发送用户名,就不发送密码了 // 如果要登录,发送的数据格式为 "iam:zhangsan"; // 如果要发送聊天消息,数据格式为 "msg:did you have dinner"; //登录的指令 NSString *loginStr = @"msg:did you have dinner"; //把Str转成NSData NSData *data = [loginStr dataUsingEncoding:NSUTF8StringEncoding]; [outStream write:data.bytes maxLength:data.length]; }
读了服务器返回的数据
-(void)readData{ //建立一个缓冲区 可以放1024个字节 uint8_t buf[1024]; // 返回实际装的字节数 NSInteger len = [inputStream read:buf maxLength:sizeof(buf)]; // 把字节数组转化成字符串 NSData *data = [NSData dataWithBytes:buf length:len]; // 从服务器接收到的数据 NSString *recStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"recStrrecStrrecStr%@",recStr); [self reloadDataWithText:recStr]; }
该方法本是用于聊天的,布置消息界面的
-(void)reloadDataWithText:(NSString *)text{ [self.MessageArr addObject:text]; [self.TableView reloadData]; // 数据多,应该往上滚动 NSIndexPath *lastPath = [NSIndexPath indexPathForRow:self.MessageArr.count - 1 inSection:0]; [self.TableView scrollToRowAtIndexPath:lastPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; }
顺便再加一个无用的方法——————懒加载
//懒加载数组
- (NSMutableArray *)MessageArr{ if (!_MessageArr) { _MessageArr = [NSMutableArray array]; } return _MessageArr; }
相关文章推荐
- 关于Apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 fo
- Apache Spark Jobs 性能调优(二)
- Unbuntu环境下配置Apache
- org.apache.commons.lang3.ArrayUtils 学习笔记
- mac下 codeigniter在apache下去掉index.php
- CentOS 下安装 Apache 和 PHP 并开启 mcrypt 扩展
- Apache IfModule prefork.c参数说明
- 记一次apache访问无响应问题
- Apache shutdown unexpectedly
- 查看apache服务器运行状态(php5.5以上)
- Apache Lucene 5.x 集成中文分词库 IKAnalyzer
- Apache Shiro 关于Shiro 授权
- Apache Shiro 使用手册(三)Shiro 授权
- Apache 下载正确姿势
- Spark中组件Mllib的学习6之ALS测试(apache spark 含隐式转换)
- Spark中组件Mllib的学习5之ALS测试(apache spark)
- Caused by: org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be
- Mac 电脑设置 Apache2的虚拟主机
- wamp下Apache2.4.x局域网访问403的解决办法
- CDH(Cloudera)与hadoop(apache)对比