zoukankan      html  css  js  c++  java
  • UDP使用流程说明

    (区别说明:iOS使用的GCDAsyncUdpSocket获取的UDP消息一次是一条,安卓的UDP消息是以列表的形式返回)

    一,UDP 初始化

    RCT_EXPORT_METHOD(initUDPWithPort:(NSString *)port callback:(RCTResponseSenderBlock)callback)

    {

      Socket *socket = [Socket sharedInsance];

      socket.delegate = self;

      socket.delegateQueue = _methodQueue;

      NSError *error;

      [socket bindToPort:(uint16_t)port.intValue?(uint16_t)port.intValue:CLIENTPORT error:&error];

      if (error) {

          NSLog(@"客户端绑定失败");

          callback(@[@"UDP客户端绑定失败"]);

      } else {

          NSLog(@"客户端绑定成功");

          callback(@[@"UDP客户端绑定成功"]);

      }

      [socket beginReceiving:nil];

      

    }

    二,UDP 发送

    #pragma mark - UDP 发送

    - (void)sendUDPMessage:(NSString *)port wifiName:(NSString *)name wifiPassword:(NSString *)password

    {

        NSDate *confromTimesp = [NSDate date];

        NSDateFormatter *dateFormat=[[NSDateFormatter alloc]init];

        [dateFormat setDateFormat:@"yyyyMMddHHmmss"];

        NSString* date=[dateFormat stringFromDate:confromTimesp];

        NSString* wifiName = [@""m3"" stringByReplacingCharactersInRange:NSMakeRange(1, 2) withString:name];

        

        //同个局域网内,发送Wi-Fi信息

        NSDictionary *wifi = @{

          @"SSID": wifiName,//@""m3""

          @"PWD": password,//@"chen9107jq"

          @"KeyType":@ "AES",

          @"AuthMode": @"WPA2PSK"

        };

        NSDictionary *data = @{

          @"type":@"SetDevWifiArg",

          @"data":wifi.mj_JSONString,

          @"result":@"req",

          @"date":date,

        };

        NSData *sendData = data.mj_JSONData;

        Socket *socket = [Socket sharedInsance];

        socket.delegate = self;

        socket.delegateQueue = _methodQueue;

        

        // 发送广播设置

        NSError *error;

        [socket enableBroadcast:YES error:&error];

        [socket sendData:sendData

                  toHost:IPAddress

                    port:(uint16_t)port.intValue?(uint16_t)port.intValue:SERVERPORT

             withTimeout:1000

                     tag:200];

    }

    三,UDP收到消息发送消息给RN(这里涉及原生发送通知给RN,参考《原生和RN之间的通知》)

    -(void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(id)filterContext {

      [[EventEmitterManager manger]udpSocket:sock didReceiveData:data fromAddress:address withFilterContext:filterContext];

      

    }

  • 相关阅读:
    AndroidManifest.xml文件详解(activity)(二)
    Android Studio显示可视化编辑界面
    Delphi XE2 新增 System.Zip 单元,压缩和解压缩文件
    LockBox的安装
    Kernel的意义
    Mathematical optimization数学上的最优化
    矩阵分析
    【2008nmj】支持向量机
    【2008nmj】BP二元分类
    【2008nmj】Logistic回归二元分类感知器算法.docx
  • 原文地址:https://www.cnblogs.com/superCode-7/p/14145410.html
Copyright © 2011-2022 走看看