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

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服务器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,444评论 11 349
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,691评论 0 6
  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 6,185评论 0 7
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,093评论 0 35
  • 大家一定看过南唐后主李煜的词《相见欢》 无言独上西楼,月如钩,寂寞梧桐深院锁清秋。 剪不断,理还乱,是离愁,别是一...
    作家云冗雾阅读 13,216评论 1 3