使用UDP方式 与iOS端App通讯

作者: 夏天然后 | 来源:发表于2017-07-20 18:38 被阅读582次
  • 首先需要安装一个TCP&UDP测试工具
  • 连接类型选择UDP
  • 目标IP 设置手机的IP, 端口8888 (这个端口在App端用来绑定)
  • 指定端口, 是App向回发信息所需要的端口, 具体设置如下图所示
创建连接

接下来为减少代码的键入, 我直接使用CocoaAsyncSocket这个三方库,作为中间媒介完成整个过程

{
      GCDAsyncUdpSocket *udpSocket; // 定义一个socket的对象 签订代理 GCDAsyncUdpSocketDelegate
}

麦 2017/7/20 17:05:40
    /*************** UDP ***********************/
    udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
    NSError *error = nil;
    // 绑定端口
    [udpSocket bindToPort:8888 error:&error];
    // 启用广播
    [udpSocket enableBroadcast:YES error:&error];
    
    if (error) {
        [SVProgressHUD showErrorWithStatus:@"启用失败"];
    }else {
        NSLog(@"%@", [udpSocket localHost]);
        // 开始接收消息
        [udpSocket beginReceiving:&error];

    }
    /*************** UDP ***********************/

#pragma mark - GCDAsyncUdpSocketDelegate
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data fromAddress:(NSData *)address withFilterContext:(nullable id)filterContext {

    NSLog(@"success");
    NSString *ip = [GCDAsyncUdpSocket hostFromAddress:address];
    NSString *s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"收到响应 %@ %@", ip, s);
    [sock receiveOnce:nil];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        uint16_t port = 9999;
        [self sendBackToHost:ip port:port withMessage:s];
    });
}
- (void)sendBackToHost:(NSString *)ip port:(uint16_t)port withMessage:(NSString *)s{
    // 回一个 hello summerxx too
    char *str = "hello summerxx too" ;
    NSData *data = [NSData dataWithBytes:str length:strlen(str)];
    [udpSocket sendData:data toHost:ip port:port withTimeout:0.1 tag:200];
}
收到信息 发回一条信息

注 如果是多个Socket对象 在回调中可以用目标端口进行区分获取数据即可
sock.localPort 来取得目标端口.

相关文章

  • 使用UDP方式 与iOS端App通讯

    首先需要安装一个TCP&UDP测试工具 连接类型选择UDP 目标IP 设置手机的IP, 端口8888 (这个端口在...

  • iOS端企业版App下载安装策略

    iOS端App下载与安装,目前采取archive企业版安装包进行安装的方式! 具体配置方式如下: 1、iOS客户端...

  • LWIP UDP偶发丢包问题

    RTTHREAD LWIP实现UDP通讯,使用得socket通讯偶发UDP丢包,用Wireshark监控通讯数据,...

  • 简易版react-native与node端udp通讯

    最近做rn项目中做到通讯模块,需要app端与硬件进行通讯,正常的通讯用的都是websocket,但是当app端ip...

  • iOS UDP通讯

    前言: 最近用GCDAsyncSocket写个小东西,UDP通讯现在大多也使用GCD,很少用Runloop。然后粗...

  • IOS UDP通讯

    网址:http://my.oschina.net/u/2285956/blog/370353 1.我们利用开源框架...

  • 在android端使用udp进行通讯

    UDP是一个无连接协议,传输数据之前源端和终端不建立连接。对于udp来说并没有服务端和客户端,都是发送端和接收端。...

  • 2019-03-21 【c++&c#】进程间通讯__共享内存

    进程间通讯方式:共享内存,管道(linux),udp通讯(若是在同一台电脑上通过udp通讯,那么它并没有经过网络,...

  • 去中心化 -- 概述

    客户端 仅节点客户端,app节点客户端,仅app客户端。 节点、app访问 可访问性,仅节点间通讯,节点与app节...

  • app端用户信息窃取--微博

    github地址 项目目的 在app(ios和android)端使用webview组件与js进行交互,串改页面,让...

网友评论

本文标题:使用UDP方式 与iOS端App通讯

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