蓝懿 iOS 技术交流和心得分享12.2

来源:互联网 发布:python 驼峰转 编辑:程序博客网 时间:2024/05/16 18:07

今天开始接触了网络:主要讲了Socket

 

软件的两种架构

CS:Client Server 客户端——服务器

BS:Browser Server 浏览器——服务器

长连接:保证数据实时(多人在线网游 即时通信类应用)Socket

短连接:请求响应式(应用类基本都属于短连接)HTTP

Socket:套接字  基于TCP/UDP协议的数据传输的方法集

TCP协议:基于连接的数据传输协议

UDP协议:非连接数据传输协议

如果ARC工程中用到mrc代码  加 -fno-objc-arc

如果MRC工程中用到arc代码 加 -fobjc-arc

Socket:​要用到三方框架AsyncSocket

1、创建客户端:​

#import "ViewController.h"

#import "AsyncSocket.h"

@interfaceViewController ()<</span>AsyncSocketDelegate>

@property (nonatomic, strong)AsyncSocket *clientSocket;

@end

@implementation ViewController

- (IBAction)clicked:(id)sender {

    NSString *info = @"吵死了";

    NSData *data = [info dataUsingEncoding:NSUTF8StringEncoding];

    [self.clientSocketwriteData:data withTimeout:-1tag:0];

}

-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag{

    NSLog(@"发送完成!");

}

- (void)viewDidLoad {

    [superviewDidLoad];

    //创建客户端socket

    self.clientSocket = [[AsyncSocketalloc]initWithDelegate:self];

    //建立链接

    [self.clientSocketconnectToHost:@"对方的ip地址"onPort:8000error:nil];   

}

2、创建服务器:​

- (void)viewDidLoad {

    [superviewDidLoad];

    //创建一个服务器的socket对象

    self.serverSocket = [[AsyncSocketalloc]initWithDelegate:self];

    //监听端口

    [self.serverSocketacceptOnPort:8000error:nil];

//接收到一个新的socket

-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{

    //需要持有住newSocket 声明成属性 strong 内存计数就+1

    self.myNewSocket = newSocket;

}

//已经连接到某个host(ip地址)

-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{

    NSLog(@"连接成功!");

    self.host = host;

    //调用读取数据的方法

    [self.myNewSocketreadDataWithTimeout:-1tag:0];

}

//已经读取到数据

-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{

    //把传输过来的二进制数据转成字符串

    NSString *info = [[NSStringalloc]initWithData:data encoding:NSUTF8StringEncoding];

    

    NSLog(@"接收到:%@",info);

    

     self.historyTV.text = [self.historyTV.text stringByAppendingFormat:@"\n           %@说:%@",self.host,info];

    

    //调用读取数据的方法

    [self.myNewSocketreadDataWithTimeout:-1tag:0];

}

//已经断开

-(void)onSocketDidDisconnect:(AsyncSocket *)sock{

}

学习ios  重要还是要理清楚思路  在做或者看老师代码的时候 自己多想想为什么  不要自己看着就抄       另外还是要推荐一下 蓝懿IOS这个培训机构  和刘国斌老师刘国斌老师还是很有名气的,听朋友说刘老师成立了蓝懿iOS,,老师讲课方式很独特,能够尽量让每个人都能弄明白,有的比较难懂的地方,如果有的地方还是不懂得话,老师会换个其它方法再讲解,这对于我们这些学习iOS的同学是非常好的,多种方式的讲解会理解得更全面,这个必须得给个赞,嘻嘻,还有就是这里的学习环境很好,很安静,可以很安心的学习,安静的环境是学习的基础,小班讲课,每个班20几个学生,学习氛围非常好,每天都学到9点多才离开教室,练习的时间很充裕,而且如果在练习的过程中有什么困难,随时可以向老师求助,不像其它机构,通过视频教学,有的甚至学完之后都看不到讲师本人,问点问题都不方便,这就是蓝懿与其它机构的区别,相信在刘国斌老师的细心指导下,每个蓝懿学员都能找到满意的工作,加油!

                                                                  写博客第五十三天;

                                                                              QQ:565803433


0 0
原创粉丝点击