局域网内通过UDP协议进行传输接受数据——AsyncUdpSocket
在相同的局域网内,可以通过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;
}
最新文章
- MySQL数据库的优化(下)MySQL数据库的高可用架构方案
- I535卡刷土豆修改4.1.2版本ROMV4過程
- 【iOS】Quartz2D图片剪切
- JMeter源码集成到Eclipse
- chrome developer tool 调试技巧
- iOS开发中view controller设置问题
- Redis 命令 - Keys
- PAT 1015
- 如何让Div层悬浮在Flash Object对象之上(转载)
- JQ 日期格式化
- CentOS6.5 下 Mysql5.7主从复制
- 《零基础学习Python》01
- mysqldump 数据库备份命令及脚本
- 内核对象 windows操作系统
- javascript中原型链与instanceof 原理
- Windows批量添加防火墙例外端口
- 渗透测试学习 三、Linux基础
- WiFi热点(1):windows8建wifi虚拟热点
- loadrunner 运行脚本-Run-time Settings之Pacing设置
- C++中的构造函数,拷贝构造函数,赋值函数
热门文章
- mvc5 + ef6 + autofac搭建项目(repository+uow)(一)
- raw socket遇上windows
- iOS navigationBar导航栏底部与self.view的分界线的隐藏
- C#有关 字符串方法的使用
- hdoj(3790) 最短路径
- UVA 10817 Headmaster's Headache(DP +状态压缩)
- List<;Map<;String, Object>;>;相关
- Android中使用WebView与JS交互全解析
- Hadoop, Python, and NoSQL lead the pack for big data jobs
- Linux下安装MySQLdb