最近在做一款智能家居的APP,用到了udp和tcp,在网上搜了很多资料,基本上搜到的都是udp和tcp单独使用的例子,还有tcp只针对一个设备连接的例子,所以很多没有的功能需要自己尝试各种方法来解决。比如udp和tcp一起使用,udp收到广播以后直接进行tcp连接,tcp同时针对多个设备进行连接等问题。
项目中用到了GCDAsyncUdpSocket框架,大家可以自己查阅相关资料
这里说一下GCDAsyncUdpSocket这个框架中的GCDAsyncSocket,这个类很神奇,如果把它设置为全局对象,那么针对连接多个设备的时候会容易出问题,如果设置成局部对象,比如说像下面这样就会连接失败。在项目中针对以上情况进行了解决,虽然解决的思路不是太好,但是确实可以进行多个设备进行连接
GCDAsyncSocket *asyncsocket = [[GCDAsyncSocket alloc] init];
asyncsocket.delegate = self;
asyncsocket.delegateQueue = dispatch_get_main_queue();
由于代码是从项目中抽出来的,所以在里面做了一些改动。项目中还有很多细节没有优化,大家可以自己进行优化
下面是github地址
https://github.com/elite-kai/ELUdpTcp