在相同的局域网内,可以通过Udp协议进行数据的传输和接收,Udp协议与Http协议不同,Udp更加方便快捷,省去了很多步骤,但是也有很多传输问题,在局域网内小范围传输数据时Udp还是非常能够胜任的。

在iOS开发环境下,就要通过AsyncUdpSocket这个框架来进行Udp协议下的数据传输。

1.要添加AsyncUdpSocket框架文件到项目,并在需要使用Udp协议的类中加入其头文件

(这两个文件在网上可以搜到)

2.对Socket进行实例化,并初始化

    NSError * error = Nil;

    //使用IPv4初始化一个Socket

    activeSocket = [[AsyncUdpSocketalloc] initIPv4];

    //设置委托为自身

    [activeSocketsetDelegate:self];

    //PORT_ACTIVE为发送端口

    [activeSocketbindToPort:PORT_ACTIVEerror:& error];

    //允许广播信息

    [activeSocketenableBroadcast:YESerror:& error];

    //允许接受信息

tag];

3.在类中加入AsyncUdpSocket的委托

#pragma mark - AsyncUdpSocket Delegate

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port

{

    returnYES;

}

 

- (void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error

{   

}

 

- (void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag

{

}

 

- (void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error

{   

}

 

- (void)onUdpSocketDidClose:(AsyncUdpSocket *)sock

{   

}

4.发送数据

 

    //theMessage为NSString,为需要发送的数据

    NSData * data = [theMessage dataUsingEncoding:NSASCIIStringEncoding] ;

    

    BOOL result = NO;

    //开始发送

 

    //pcHost为接收方的ip地址,255.255.255.255为向全域广播

 

    //thePort为发送端口

    result = [theSocket sendData:data

                       toHost:pcHost

                         port:thePort

                 

                          ];

    

    if (!result) {

        NSLog(@"send failed");

    }

    else{

        NSLog(@"send succeed");

    }

5.接收数据

接收数据的实现在委托中

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port

{

//重新设置接收时间

tag];

//info就为接收到的数据

    NSString *info=[[NSStringalloc] initWithData:data encoding: NSUTF8StringEncoding];

    returnYES;

}

最新文章

  1. MySQL数据库的优化(下)MySQL数据库的高可用架构方案
  2. I535卡刷土豆修改4.1.2版本ROMV4過程
  3. 【iOS】Quartz2D图片剪切
  4. JMeter源码集成到Eclipse
  5. chrome developer tool 调试技巧
  6. iOS开发中view controller设置问题
  7. Redis 命令 - Keys
  8. PAT 1015
  9. 如何让Div层悬浮在Flash Object对象之上(转载)
  10. JQ 日期格式化
  11. CentOS6.5 下 Mysql5.7主从复制
  12. 《零基础学习Python》01
  13. mysqldump 数据库备份命令及脚本
  14. 内核对象 windows操作系统
  15. javascript中原型链与instanceof 原理
  16. Windows批量添加防火墙例外端口
  17. 渗透测试学习 三、Linux基础
  18. WiFi热点(1):windows8建wifi虚拟热点
  19. loadrunner 运行脚本-Run-time Settings之Pacing设置
  20. C++中的构造函数,拷贝构造函数,赋值函数

热门文章

  1. mvc5 + ef6 + autofac搭建项目(repository+uow)(一)
  2. raw socket遇上windows
  3. iOS navigationBar导航栏底部与self.view的分界线的隐藏
  4. C#有关 字符串方法的使用
  5. hdoj(3790) 最短路径
  6. UVA 10817 Headmaster's Headache(DP +状态压缩)
  7. List<Map<String, Object>>相关
  8. Android中使用WebView与JS交互全解析
  9. Hadoop, Python, and NoSQL lead the pack for big data jobs
  10. Linux下安装MySQLdb