- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章IOS中使用 CocoaAsyncSocket由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Socket 。
如今在 iOS 里对 Socket 的应用慢慢多了起来,就一个即时通讯,很多应用都有集成,那即时通讯功能一般来说就肯定是基于 Socket 的,Socket 这个话题我一直谈论的比较少,一是由于看过一些 C/C++ 操作 Socket 的代码被吓到了一直还有心理阴影存在,二是工作里没怎么遇到相关的需求应用,所以也没有去深入研究相关内容.
还没接触过 Socket 编程肯定也会听说过这几个关键字:包、握手、连接、TCP、UDP 等等,Socket 编程的文章网上大把大把有,而作为一个初心者总是对这些 望文生怯,之前我也是如此,所以深有体会,希望读完本篇文章后你会对 在 iOS 平台上的 Socket 编程有一个简单的了解,那就是不要怕! 。
Socket on iOS 。
在 iOS 上,哦不,应该说 Cocoa 的世界里,Socket 编程应该有以下几种方式:
sys/socket.h - 系统底层 Socket 编程接口 CFNetwork - Core Foundation 中对 socket 的封装 NSStream - Cocoa 中对 CFNetwork 的封装 当然,上面这些都是大哥级别的,但是就是不想写C,我们小白当然可以用用抽象更高的开源库,比如:
CocoaAsyncSocket SocketRocket Socket.IO CocoaAsyncSocket 。
之前一直没有机会在 iOS 平台上写 Socket,最近遇到一个需要用 Socket 做文件上传下载的功能,那么 iOS 上做 Socket 编程大家都知道是 CocoaAsyncSocket 一家独大,也木有发现其他更好的替代品,于是简单看了看文档,就操刀上战场了.
CocoaAsyncSocket 是一个纯 Objective-C 的开源库,用起来非常简单,当然也兼容了 Swift 的语法.
TCP & UDP 。
如果你看到 CocoaAsyncSocket 主页的说明应该会注意到有 TCP 和 UDP 两套接口,简单来说就是 Socket 支持两种协议,一个叫 TCP、一个叫 UDP;TCP 面向连接,每次请求需要几次 “握手”,数据有序可靠;UDP 就简单点,不握手了,发包也无序,不用保持连接,也不用一些其它的开传输开销,带宽消耗就更少。然后 CocoaAsyncSocket 针对于 TCP 和 UDP 分别封装出来了两套 API,命名分别以 TCP 或 UDP 打头.
GCD & Run-loop 。
仔细观察 CocoaAsyncSocket 对其类的命名可以发现除了 TCP 和 UDP 分拆成了两套 API,一套时基于 GCD 程安全的 GCDAsyncSocket/GCDAsyncUdpSocket,一套是基于 Run-loop 的 AsyncSocket/AsyncUdpSocket,一般来说我们用基于 GCD 的封装就好了.
在实际应用中我想大多数需求都是基于 TCP 的,所以我们主要看看 GCDAsyncSocket,看到 GCD 不要以为其所有回调都是 GCD 的,看了源码你就知道所有回调全是 Delegate.
GCDAsyncSocket 。
一般 iOS 上 socket 做 client 端居多,所以用到的一些基本操作就是 connect、read、write、disconnect,GCDAsyncSocket 的封装非常简单,初上手可能遇到的问题就在于一个完整的 socket 操作流程的不清楚,只要摸清楚服务端的逻辑流程就很轻松了,比如需要先读多少字节,然后从结果中解析出某部分数据,然后再读多少字节,再分析数据,再读再写... 。
总结 。
其实 Socket 并没有想象中的那么复杂,很多底层的工作框架都替我们做了,可以更集中精力在业务逻辑上.
最后此篇关于IOS中使用 CocoaAsyncSocket的文章就讲到这里了,如果你想了解更多关于IOS中使用 CocoaAsyncSocket的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我试过 pod install命令并收到此错误。 % pod install Analyzing dependencies [!] CDN: trunk Repo update failed - 18
在尝试建立多个 TCP 连接时出现“在连接或接受连接时尝试连接。先断开连接”错误,请建议我如何使用 CocoaAsyncSocket 建立 2 个或更多实时 TCP 连接。 最佳答案 如果您正在使用
我有一个 AsyncSocket 实例,我一直在 iPad 上用作服务器,然后在另一个充当客户端的 iPad 上运行 AsyncSocket 套接字。我拥有在客户端和服务器之间交换数据所需的所有代码—
在我基于 TCP 套接字的服务器上,我通过流发送数据包,其中数据包包含一个 header ,指定数据包中的字节数,后跟该字节数。对于那些熟悉 Erlang 的人来说,我只是简单地设置了 {packet
我正在使用 CocoaAsyncSocket ,我需要创建一个向服务器发送消息并等待服务器回复的函数,在委托(delegate)方法中它确实收到服务器响应,但我需要发送消息的函数等待服务器回复并返回响
我在我的 appDelegate didFinishLaunchingWithOptions 方法中创建了一个 TCP 套接字连接。那是简单的部分,我已经成功连接到我的服务器。我很难从 View 中的
我一直在寻找通过 TCP 将文件(在 iphone 上录制的小声音)发送到服务器以及从服务器发送到其他设备的方法。看起来最简单的方法是使用 CocoaAsyncSocket 项目。(这是真的吗?) 然
我目前正在使用 CocoaAsyncSocket 构建应用程序。我连接到 TCP 服务器并读取/写入一些数据。 我使用以下方法创建套接字 self.socket = [[GCDAsyncSocket
我有一个简单的客户端和服务器应用程序半与 CocoaAsyncSocket 一起使用。我可以使用客户端连接到服务器,并且可以在它们之间来回传递数据,并且委托(delegate)方法似乎可以正确触发。我
有人有过将 cocoaasyncsocket 与 google protobuf 一起使用的经验吗?我想使用 varint 来分隔帧,使用基于 netty 的客户端/服务器组合非常简单,但在使用 co
这是一个简单的套接字服务器。 如果我删除Socket类并将serverSocket变量和startSocketServer函数放入ViewController类Socket服务器中开始倾听。 我通过l
我将属性定义如下: let addr:String = "192.168.31.218" let port :UInt16 = 8000 let timeout:Double = 5.0 var so
我已经使用 CocoaAsyncSocket 创建了一个 TCP 套接字连接,每当我尝试执行 didReadData 时,我都会返回空白。当我设置断点并尝试调试时,我发现“msg”的值是@""。 这是
使用 CocoaAsyncSocket library 连接到 iPv6 主机时出现问题 我成功地让 GCDUDPAsyncSocket 工作,但意识到 TCP 更适合我的用例。 不幸的是 - 我永远
我正在创建基于 CocoaAsyncSocket 和 STOMP 协议(protocol)的简单消息传递应用程序。所以我创建了主类,它使用 PublishSubject ,因此订阅者可以观察传入的 S
我有一个已成功使用 AsyncSocket 的应用程序,但该应用程序需要在 32 位 Mac 系统上运行,因此我想要一个非 ARC 版本的 AsyncSocket。在我的搜索中,我发现 AsyncSo
我已经在这个问题上停留了几天,似乎越来越接近解决方案(在伟大的用户@SO的帮助下)。我正在使用 CocoaAsyncSocket 库来创建到 Windows 服务器的 TCP 套接字连接。 正在我的
关于如何将 GCDAsyncSockets 与 Objective-C 结合使用的信息有很多,但与 Swift 结合使用的信息却很少,而且几乎没有关于如何将其实际安装到 Xcode 环境中的信息。我尝
在集成最新的 robbiehanson 的 XMPPFramework 时,我遇到了一个错误:CocoaAsyncSocket/GCDAsyncSocket.h' file not found 还有一
我正在尝试使用 cocoaasyncsocket 库附带的 echo 服务器示例的修改版本执行以下操作: 1) 打开一个连接到充当服务器的 python 脚本 2) 发送数据//有效,但委托(dele
我是一名优秀的程序员,十分优秀!