美文网首页iOS智能家居
iOS 智能家居 TCP连接网关

iOS 智能家居 TCP连接网关

作者: 诠释残缺 | 来源:发表于2017-04-15 17:51 被阅读98次

需求
本地化:在内网的情况下,客户也可以控制设备,并且在App上显示。

需要在外网情况下登陆过App,将账号下的网关和网关下在线的设备保存在本地。

使用CocoaAsyncSocket进行开发

github下载地址CocoaAsyncSocket
可以通过CocoaPods进行导入配置也可以通过手动导入

通过UDP接收到的信息进行TCP连接网关

使用GCDAsyncSocket

1>准备工作
#import "GCDAsyncSocket.h"
<GCDAsyncSocketDelegate>
{
//    TCP连接
    NSString *tcpIPSTR;
    UInt16 tcpPort;
}
2>建立TCP连接
#pragma mark -建立TCP连接
- (void)tcpReconnect{
    
    [_tcpSocket disconnect];
    _tcpSocket = nil;
    _tcpSocket.delegate = nil;
    
    _tcpSocket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    NSError *error;
   //  根据IP地址和端口号进行TCP连接
    if (![_tcpSocket connectToHost:tcpIPSTR onPort:tcpPort error:&error]) {
        NSLog(@"错误:%@",error.description);
    }else {
        NSLog(@"TCP打开端口%@,%hu",tcpIPSTR,tcpPort);
    }
}
3>GCDAsyncSocketDelegate 代理方法
#pragma mark -GCDAsyncSocketDelegate
  //  连接成功
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)ports{

    NSLog(@"TCP连接成功IP:%@ ,端口号:%hu", host, ports);
  //  接受信息
    [_tcpSocket readDataWithTimeout:-1 tag:0];  //  每次接发数据都需要加上
}

- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(nullable NSError *)err{
    
#判断是因为什么原因关闭,如果是退出App关闭或者切换外网关闭无需处理,如果是其他情况关闭,就进行重连
    NSLog(@"TCP连接关闭:%@",err);
}

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
    
  //  接收到信息,解析信息,处理
    NSLog(@"TCP接收到的信息:%@",data);
    [_tcpSocket readDataWithTimeout:-1 tag:0];  //  每次接发数据都需要加上
}
4>发送信息
- (void)tcpSendMessageWithData:(NSData *)data{

        [_tcpSocket writeData:data withTimeout:-1 tag:0];  //  发送信息
        [_tcpSocket readDataWithTimeout:-1 tag:0];  //  每次接发数据都需要加上
}

相关文章

  • iOS 智能家居 TCP连接网关

    需求本地化:在内网的情况下,客户也可以控制设备,并且在App上显示。 需要在外网情况下登陆过App,将账号下的网关...

  • 默默工作的产品

    小米智能家居套装里面最复杂、成本最高的是网关,用途是连接ZigBee设备,并把这些ZigBee设备连接到互联网,从...

  • 587,TCP链接和HTTPs链接过程(面试点:TCP:第一次握

    TCP连接 TCP基础知识 TCP标志位 SYN 建立连接 ACK 表示响应 FIN 关闭连接 TCP连接...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • iOS TCP 连接原理

    TCP可靠传出的实现: 1). TCP连接的每一端都必须设有两个窗口(一个窗口发送,一个窗口接收), TCP的可靠...

  • IOS WKWebView Socket: Broken pip

    问题: IOS WKWebView在加载完网页后把自身连接中断,造成server无法回传数据,导致TCP连接中se...

  • 连接管理

    1. TCP连接 HTTP连接实际上就是TCP连接和一些使用连接的规则。TCP连接是因特网上的可靠连接。TCP为H...

  • 计算机网络复习

    传输层 TCP TCP连接管理 TCP 是面向连接的协议。每一个 TCP 连接有三个阶段:连接建立、数据传送、连接...

  • 「基础知识总结」- 计算机网络

    TCP TCP和UDP区别 连接性: tcp:面向连接 udp: 无连接 可靠性: tcp:可靠(无差错、不丢失、...

  • TCP/IP协议--TCP三次握手建立连接

    TCP连接 TCP是面向连接的协议,它基于传输连接来传送TCP报文段 TCP传输连接的建立和释放是每一次面向连接的...

网友评论

    本文标题:iOS 智能家居 TCP连接网关

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