ios开发之发送UDP广播并接收数据

用了asyncUdpSocket, 服务端在接收到广播后,就会做出回应,然后就可以开始通讯了。

- (void)init{

AsyncUdpSocket *socket=[[AsyncUdpSocketalloc]initWithDelegate:self];

[socketlocalPort:16747];

NSTimeInterval timeout=5000;

NSString *[email protected]"quick_stat";

NSData *data=[NSDatadataWithData:[request dataUsingEncoding:NSASCIIStringEncoding] ];

UInt16 port=8081;

NSError *error;

[socket enableBroadcast:YESerror:&error];

[socket sendData :data toHost:@"255.255.255.255" port:port withTimeout:timeout tag:1];

[socket receiveWithTimeout:-1tag:0];

NSLog(@"begin scan");

}

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

NSString* result;

result = [[NSStringalloc] initWithData:data encoding:NSASCIIStringEncoding];

NSLog(@"%@",result);

NSLog(@"received");

}

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

NSLog(@"not received");

}

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

NSLog(@"%@",error);

NSLog(@"not send");

}

-(BOOL)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{

NSLog(@"send");

}

-(BOOL)onUdpSocketDidClose:(AsyncUdpSocket *)sock{

NSLog(@"closed");

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-04 09:22:58

ios开发之发送UDP广播并接收数据的相关文章

android 发送UDP广播,搜寻服务器建立socket链接

应用场景:客户端(手机,pc)需要搜寻所在局域网内的服务器并获得服务器地址. 方法简介:客户端发送UDP广播,服务收到广播后得到客户端ip地址,然后向客户端发送一次socket链接,客户端收到socket链接,获得服务器地址. 相关知识: UPD.TCP.TCP是面向链接的,可靠的通信方式.UDP是面向非链接的通讯方式.TCP的建立比较麻烦,要经过"三次握手".而UDP的建立比较简单,发送方只管把内容发送出去,不管接收方是否收到.UDP的传输分为:单播,多播,广播.其中,多播和广播是通

iOS开发中视图控制器ViewControllers之间的数据传递

iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的.本文先从手写UI来讨论,在下一篇文章中讨论在storyboard中传递数据. 首先新建一个空工程,并添加一个根视图控制器类,如下图所示: # 在函数didFinishLunchingWithOption中添加几行代码,完成后如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 - (BOOL)application:(UIApplication

IOS开发之——四种方法解析Jason数据(转)

本文将介绍TouchJson. SBJson .JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,TouchJson和SBJson需要下载他们的库 TouchJson包下载: http://download.csdn.net/detail/enuola/4523169 SBJson 包下载: http://download.csdn.net/detail/enuola/4523177 JSONKit包下载:http://download.csdn.net/detail

Android对UDP组播接收数据的有限支持(一)

最近,想做一个跨平台的局域网的文件传输软件,思路是组播设备信息,TCP连接传输文件.于是进行了一次简单的UDP组播测试,发现Android对于UDP组播接收数据的支持即极为有限. 部分代码如下 1 package com.hsocket.Udp; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 7 public class UdpReceiv

利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口

前言 sendmsg和recvmsg函数是一对相对下层的套接字发送.接受函数.通过这对函数,我们可以设置或者取得数据包的一些额外的控制信息,这些信息中比较常用的就是本文要介绍的发送.接受接口信息.通过这对函数,我们可以指定一个数据包发送的时候使用的接口(网卡)或者获得一个接受到数据包的来源接口. sendmsg函数使用 sendmsg(fd, &mhdr, 0)函数中最重要的就是msghdr结构体.其定义如下: struct msghdr { void *msg_name; #发送地址 sock

NetworkComms V3 之发送UDP广播消息

NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3目前只支持基本的UDP通信 UDP通信一个很强大的功能,就是UDP广播.允许网络上发送的一个数据包,可以被多个适配器接收.下面的场景中可以考虑使用UDP通信 1:检查哪些网络端点在线 2: 通知网络端点有一个新的服务 3: 传递信息到一组端点上 使用networkComm V3 发送UDP数据包 UDPConnection.SendObject("ChatM

【iOS开发-95】JSON反序列化、XML数据解析以及主线程中的UI更新等小细节

我们发送请求后,一般会获得data数据,这个时候我们反序列化即可. 常用的数据格式之一是JSON,格式如: {key:value,key:value,key:value....} (1)因为iOS5之前苹果不支持JSON解析,所以催生很多第三方解析,SBJson以及JSONKit.简单地JSON反序列化示例如下: NSURL *url=[NSURL URLWithString:@"http://www.baidu.com"]; NSURLRequest *request=[NSURLR

iOS开发-邮件发送

Web开发的时候邮箱注册登录是必不可少的,手机号可以更换,不过相对而言,邮箱只是用于比较重要的时候用到,比如找工作的时候必填的邮箱,注册网站会员的邮箱验证.现在的手机和Web的其实操作是一样的,大多数情况还是邮件的发送,iOS上有两种邮件发送的方式,一种是使用内置的MFMailComposeViewController发送邮件,第二种就是通过第三方类库SKPSMTPMessage发送邮件(https://github.com/jetseven/skpsmtpmessage). MFMailCom

iOS开发之本地推送、接收到推送的方法

我们有时候有需要本地通知的功能 本地推送通知也需要申请推送通知权限,具体步骤可看我的上一篇博客(关于推送权限申请) 1.添加本地推送的方法,需要判断iOS10.0和iOS8.0不同的方法 #import <UserNotifications/UserNotifications.h> /** 添加本地推送通知*/ + (void)addLocalNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(