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];

      

    }

  • 相关阅读:
    AJAX 弹出窗消息类
    正则表达式验证总结
    Coolite 三列布局演示
    Coolite: Button、TextField、DataField、ComBox
    页面返回
    Coolite GridPanel 操作之一:获取gridpanel 选中行的记录信息
    页面上Enter 键禁用
    new、abstract、virtual、override,sealed关键字区别和使用代码示例
    Coolite TreePanel 操作之一:TreePanel 刷新
    调用WCF出现 The remote server returned an error: (401) Unauthorized. 错误
  • 原文地址:https://www.cnblogs.com/superCode-7/p/14145410.html
Copyright © 2011-2022 走看看