iOS开发iOS

使用CocoaAsyncSocket的tcp连接和简单实用

2016-05-05  本文已影响6528人  AlexLi_

CocoaAsyncSocket下载
CocoaAsyncSocket支持tcp和udp。其中:
*AsyncSocket类是支持TCP的
*AsyncUdpSocket是支持UDP的

1、导入文件GCDAsyncSocket
2、导入头部文件
3、端口号和主机ip

NSString *host = @"127.0.0.1";
int port = 12345;

4、创建一个socket对象

//将GCDAsynSocket设置为全局变量
GCDAsyncSocket *socket = [[GCDAsyncSocket alloc] initWithDelegate:self  delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)];

delegate:一半看到代理我们都写self
delegateQueue:

全局队列(代理的方法是在子线程被调用)

dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)

主队列(代理的方法会在主线程被调用)

dispatch_get_main_queue()

<b>如果代理里的动作 是 耗时的动作,就 不能 在主线程中调用,要 在子线程中</b>
<b>如果代理里的动作 不 是耗时的动作,就 能 在主线程中调用,不需要 在子线程中</b>

优先级 我们设置默认 开发者使用默认
5、连接

NSError *error = nil;
[socket connectToHost:host onPort:port error:&error];

这里可以输出error
6、如何知道连接成功失败
6.1、代理GCDAsyncSocketDelegate
6.2、实现代理方法
didConnectToHost 连接成功
didDisconnect 断开连接(如果error有值,连接失败,如果没值,正常断开)

connect、read、write、disconnect,GCDAsyncSocket

write:

[_socket writeData:[msg dataUsingEncoding:NSUTF8StringEncoding] withTimeout:-1 tag:101];
//withTimeout: 超时时间 -1  表示不超时
//tag: 一个标识

代理方法 didWriteDataWithTag 数据发送成功 手动读取(readDataWithTag) 才会调用read代理方法 (didReadData)
read:
1、实现代理方法 didReadData

http://pan.baidu.com/s/1i43R3Yt 提取密码:4xme

实用CocoaAsyncSocket创建tcp服务器

上一篇下一篇

猜你喜欢

热点阅读