美文网首页iOS开发iOS
使用CocoaAsyncSocket的tcp连接和简单实用

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

作者: AlexLi_ | 来源:发表于2016-05-05 16:26 被阅读6528次

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

相关文章

网友评论

  • 乱尘:就想问问,为什么不挂 三方库作者的GitHub,而自己丢个自己的百度盘

    https://github.com/robbiehanson/CocoaAsyncSocket
    乱尘:@L了个H 理论可以,实际你还是用https吧
    L了个H:CocoaAsyncSocket 能传输视频么
    AlexLi_:@乱尘 那时候还在读书。。。没管那么多
  • feng55:Error Domain=NSPOSIXErrorDomain Code=65 "No route to host" UserInfo={NSLocalizedDescription=No route to host, NSLocalizedFailureReason=Error in connect() function} 这个错误是什么原因呢
    NotFunGuy:@CancerJing 但是如果我直接运行控制台程序 就可以开启监听 如果我是写的MAC APP程序 就不行 我也不知道为什么
    AlexLi_:@STzen 是遇到了, 发送一次后, 就又要重连的问题吗 , 上面服务端 的demo 是有问题的。 可以去百度下载一个py 的服务端 运行下。
    NotFunGuy:你好 我也正好遇到这个问题了 请问你怎么解决的呀
  • feng55:完全没有消息返回啊。请问怎么才能知道自己的tcp消息发送成功了
  • 丶丶夏天:为什么客户端发送一次之后再发送消息就没用了
  • b1eacb30758d:用来保持客户端与服务器的长链接的一个文件?
  • shushuzhen:udp连接的话就只需要更改socket对象为udp那个是吗?

本文标题:使用CocoaAsyncSocket的tcp连接和简单实用

本文链接:https://www.haomeiwen.com/subject/gwpdrttx.html