IOS UDP小例子总结

iOS UDP使用总结 本文探讨iOS平台UDP通信的实现方案。首先对比UDP与TCP的核心区别:UDP无连接、速度快但不保证可靠性,适合实时应用;TCP面向连接、可靠但速度较慢。然后介绍两种iOS实现方案:使用CocoaAsyncSocket三方库或iOS12+原生NetworkFramework,均提供代码示例。文章还强调UDP应用的安全注意事项,包括数据验证、加密传输等。最后指出UDP的"不可靠"特性既是挑战也是机遇,合理选择方案可实现高性能网络应用。 阅读详情

首先需要导入UDP类;

建立通信机制;

点击发送按钮 发送消息,想局域网的所有处在通信端口 (开关开着的情况下)    开关关着就是私聊的情况了

协议方法里实现接收 局域网的消息

运用timer的方法检测局域网的人有谁在

Cell里面显示  同一局域网的人的IP的后缀;

@interface ViewController ()<AsyncUdpSocketDelegate,UITableViewDataSource,UITableViewDelegate>

@property (nonatomic,copy) NSString *toHost;

@property (weak, nonatomic) IBOutlet UITextField *messageTF;

@property (weak, nonatomic) IBOutlet UISwitch *mySwith;

@property (weak, nonatomic) IBOutlet UILabel *stateLable;

@property (weak, nonatomic) IBOutlet UITextView *historyView;

@property (weak, nonatomic) IBOutlet UITableView *tableView;

@property (nonatomic,strong)AsyncUdpSocket *udpSocket;

 

@property (nonatomic,strong)NSMutableArray *onlineHosts;

@end

 

@implementationViewController

 

- (IBAction)sendMessageAction:(UIButton *)sender {

    NSData *data = [self.messageTF.text dataUsingEncoding:NSUTF8StringEncoding];

    if (self.mySwith.isOn) {//如果开关是开着的,则给所有人发送

        [self.udpSocket sendData:data toHost:@"255.255.255.255" port:9000 withTimeout:-1 tag:0];

        self.historyView.text = [self.historyView.text stringByAppendingFormat:@"\n我对所有人说%@",self.messageTF.text];

       

    }else{//如果开关是关着的,则私聊发送, 目前toHost没有获取到,所以这个代码实现到这里没有作用,需要下面的tableview实现出来后,记录了这个IP才可以。

       

        [self.udpSocket sendData:data toHost:self.toHost port:9000 withTimeout:-1 tag:0];

        self.historyView.text =[self.historyView.text stringByAppendingFormat:@"我对%@说:%@",self.toHost,self.messageTF.text];

    }

    

}

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock

    didReceiveData:(NSData *)data

           withTag:(long)tag

          fromHost:(NSString *)host

              port:(UInt16)port{

    

   if(![host hasSuffix:@":"]) {

        NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

        if([string isEqualToString:@"谁在线"]) {

            NSData *data = [@"我在线" dataUsingEncoding:NSUTF8StringEncoding];

           [self.udpSocket sendData:data toHost:host port:9000 withTimeout:-1 tag:0];

        }else if ([string isEqualToString:@"我在线"]){

            //把除我之外的IP记录下来Host

           if (![self.onlineHosts containsObject:host]&&![host isEqualToString:@"192.168.1.12"]) {

               [self.onlineHosts addObject:host];

               

               [self.tableView reloadData];

        

           }

           

        }else{//匹配完成后的 聊天内容获取;

            self.messageTF.text = [self.messageTF.text stringByAppendingFormat:@"\n%@说:%@",host,string];

           

       }

    }

    [self.udpSocket receiveWithTimeout:-1 tag:0];

    return  YES;

    

}

 

- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section{

    return  self.onlineHosts.count;

}

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

    NSString *host = [[self.onlineHosts[indexPath.row]componentsSeparatedByString:@"."]lastObject];

   cell.textLabel.text = host;

   return cell;

    

}

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

   self.toHost = self.onlineHosts[indexPath.row];

    self.stateLable.text = [NSString stringWithFormat:@"我对%@说:",self.toHost];

    [self.mySwith setOn:NO animated:YES];

}

 

 

//协议方法:接收别人发的消息

- (void)viewDidLoad {

    [super viewDidLoad];

    self.onlineHosts = [NSMutableArray array];

    self.udpSocket = [[AsyncUdpSocket alloc]initWithDelegate:self];

    [self.udpSocket bindToPort:9000 error:nil];

    [self.udpSocket enableBroadcast:YES error:nil];

    

    [self.udpSocket receiveWithTimeout:-1 tag:0];

    

    [self checkingOnLine];

    [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(checkingOnLine) userInfo:nil repeats:YES];

}

- (IBAction)switchChange:(UISwitch *)sender {

   if(sender.isOn) {

        self.stateLable.text = @"我对所有人说";

   }else{

        self.stateLable.text = [NSString stringWithFormat:@"我对%@说:",self.toHost];

       if (self.toHost) {

            self.stateLable.text = [NSString stringWithFormat:@"我对%@说:",self.toHost];

       }else{

           [self.mySwith setOn:YES animated:YES];

       }

    }

 

 

}

 

-(void)checkingOnLine{

    NSData *data = [@"谁在线" dataUsingEncoding:NSUTF8StringEncoding ];

                   

    [self.udpSocket sendData:data toHost:@"255.255.255.255" port:9000 withTimeout:-1 tag:0];

}

 

- (void)didReceiveMemoryWarning{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

 

@end

 

【iOS、Swift】UDP广播实现流程 经过测试,只有广播的IP为192.168.1.255的情况下,才会同时申请无线数据、本地网络的权限。所以在首次打开APP的情况下可以进行一次192.168.1.255广播,这样就可以同时弹出授权提示框。首先是创建一个具有Multicast Networking能力的APP ID,其次是app中获取相应的授权。iOS设备在iOS14之后增加了本地网络的权限。1. 打开苹果开发者网页,创建一个明确的APP ID(2. 创建成功后,点击创建的ID,进入页面后,在。填入刚刚创建的APP ID。 阅读详情

相关推荐

iOS socket udp 广播

iOS上使用 socket UDP 广播机制,和同一网段下的所有设备通信。

uSv_nangege的博客 1055

iOS高级理论:UDP的介绍和使用

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。

长沙火山 1912

聊聊iOS中TCP / UDP 协议

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于 传输层协议。 UDP(User Datagram protocol)用户数据报协议,它只提供应用进程寻址和简单的差错检测,并不提供其他功能。 TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发

X_codeWKH的博客 4220

iOS中UDP的使用

// //  ViewController.m //  UDPDemo // //  Created by qianfeng01 on 15-8-13. //  Copyright (c) 2015年 zg. All rights reserved. // #import "ViewController.h" #import "AsyncUdpSocket.h" #i...

weixin_33877885的博客 677

iOS Socket编程-C语言版(UDP)

iOS Socket编程-C语言版(UDP) 本篇文章为总结使用C语言的api来完成UDP通信的基本功能,如果您对Socket不了解,请先阅读上一篇理论知识:iOS Socket理论知识如果文章中有任何您认为不正确的或者有疑问的,请联系笔者!谢谢! 支持原创,请阅读原文 1. UDP Socket编程先讲一讲UDP编程,因为比TCP要简单多了。首先,我们需要明白UDP是用户数据报协议,英文名为U

标哥 2718

iOS UDP通信示例应用实战

用户数据报协议(UDP)在iOS开发中扮演着关键的角色,特别是在需要快速且高效传输数据的应用场景中。UDP是一种无连接的网络协议,它提供了最小的开销,适用于那些对数据包传输时延敏感的应用。在互联网协议套件中,传输层控制数据的传输,确保数据包可靠地从源主机传输到目标主机。TCP(传输控制协议)和UDP(用户数据报协议)是这一层中最为常见的两种协议。TCP:是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP保证数据的顺序和完整性,它通过三次握手来建立连接,确保双方准备好进行数据传输。

weixin_35238815的博客 837

三种经典iPhone上网络抓包方法详解

很多时候需要网络抓包分析,在iPhone上抓包稍有不同,下面介绍三种常用的方式。分析工具以wireshark为例。一、最简单的方式:用PC作为热点,在PC上抓包 优点:简单; 缺点:不能抓真机2G/3G/4G网络数据。 步骤如下: PC接上有线; PC用Wi-Fi方式共享网络,即PC作为一个热点; 手机设置网络,选择PC那个热点; 在PC上打开wireshark,选择要监控的接口,指定Wi-Fi端...

唐小引(Echo)的 优快云 博客。 1万+

ios-socket通信简单的局域网内聊天.zip

一个简单的局域网内的两台设备的聊天。demo内有视频的传输,只不过只实现自己传给自己,有意向者一起研究。

iOS —— 客户端Socket UDP协议广播机制的实现

1.前言   什么是UDP协议广播机制? 举一个例, 例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三” 如果它是张三,它就会回应你,在网络中也是一样的。 UDP广播机制的应用场景: 若干个客户端,在局域网内(不知道IP的情况下) 需要在很多设备里需找特有的设备,比如服务器,抑或是某个打印机,传真机等。

天空 760

iOS UDP demo

关于iOS UDP编程的一个小demo 一目了然。只试用于初学者,了解原理。

swift -> AsyncSocket 建立 UDP socket 连接

NULL 博文链接:https://mft.iteye.com/blog/2296790

iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备

1.前言      什么是UDP协议广播机制?      举一个例, 例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三”   如果它是张三,它就会回应你,在网络中也是一样的。        UDP广播机制的应用场景:       若干个客户端,在局域网内(不知道IP的情况下) 需要在很多设备里需找特有的设备,比如服务器,抑或是某个打印机,传真机等。

li_yangyang_li的博客 6429

双斜率积分ADC:高精度测量中的经典选择与TC530/TC534实战指南

模数转换器(ADC)是连接模拟世界与数字系统的关键桥梁,其核心任务是将连续的模拟信号转换为离散的数字量。在众多ADC类型中,双斜率积分ADC以其独特的原理脱颖而出,它通过积分与反积分的线性过程,用时间换取精度,实现了对噪声的卓越抑制和极高的线性度。这种技术价值使其在对抗工频干扰、追求长期稳定性的场景中无可替代,尤其适用于精密测量仪表和工业传感器信号采集。本文聚焦于双斜率积分ADC的经典代表TC530与TC534,深入剖析其工作原理、关键参数如积分电阻、积分电容的选择,并提供从硬件电路设计到软件驱动的完整实战

weixin_30847063的博客 359

iOS 利用Socket UDP协议广播机制的实现

1.前言 什么是UDP协议广播机制? 举一个例。 比如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三” 假设它是张三,它就会回应你。在网络中也是一样的。 UDP广播机制的应用场景: 若干个client。在局域网内(不知道IP的情况下) 须要在非常多设备里需找特有的设备,比方server,抑或是某个打印机,传真机等。 ...

weixin_33913377的博客 133

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3642

FLUENT UDF编译及蒸发冷凝相关问题

蒸发冷凝与相间传质

weixin_48029137的博客 1万+

代码例子区全区搜索索引(27th Feb 2011 Updated)

代码例子区全区搜索索引(27th Feb 2011 Updated) 2011年06月01日   如果以下的链接有错误,或者存在其他问题。请给我发站内短信,或者发送邮件至[ft=#0070af,,   希望该帖对大家有帮助   /************************   ************************ IOS 类代码   ***********...

gqt896lp 187

CODESYS连接触摸屏

触摸屏:威纶通-MT8071iP(网络IP:192.168.1.10) 控制器:研华AMAX-5580(PAC)(Win10系统,网络IP:192.168.1.3) CODESYS RTE:RTE 64 V3.5 SP13 Build05 笔记本:Thinkpad L14(网络IP:192.168.1.2) CODESYS IDE:V3.5 SP13(ADD ON V3.5.13.5) 一、确认网络通讯正常(关闭防火墙) 笔记本与触摸屏网络测试情况 笔记本与控制器网络测试情况 二、控制器部分 1、新建

Leo的博客 1万+

UDPSocket

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33946605的博客 102

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

OpenCV轮廓匹配实战:5分钟搞定Hu矩形状识别(附完整代码)

本文详细介绍了使用OpenCV进行轮廓匹配的实战技术,重点讲解了Hu矩形状识别在工业质检等领域的应用。通过完整的代码示例和参数调优技巧,帮助开发者在5分钟内实现高效的形状识别,提升工业检测的准确性和效率。

nnn11的博客 676

iOS UDP编程

UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!  UDP适用于一次只传送大量数据、对可靠性要求不高的应用环境。 tcp协议和udp协议的差别 是否连接          面向连接                 面向非连接 传输可靠性       可靠            

JackYang的博客 660

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

100天精通Python(基础篇)——第3天:运算符全解析(算术运算符、比较运算符、逻辑运算符、赋值运算符及其优先级规则)

努力让自己发光,对的人才能迎着光而来 14万+

IOS UDP使用

转自:http://www.41443.com/HTML/iphone/20150814/391614.html // // ViewController.m // UDPDemo // // Created by qianfeng01 on 15-8-13. // Copyright (c) 2015年 zg. All rights reserved. // #import

爱技术....爱生活! 1933

SIMULINK开发项目实例 1000 例专栏之第847例--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析

本文介绍了使用Simulink进行多旋翼无人机风扰动稳定性分析的完整流程。首先建立包含动力学模型、控制系统和环境模拟三大模块的仿真系统,其中动力学模型基于牛顿-欧拉方程,控制系统采用PID调节器。重点展示了MATLAB函数实现的风扰动模型和姿态控制算法,通过设置输入信号和输出显示模块完成闭环仿真。最后通过多次风速条件下的仿真测试评估控制系统的抗干扰能力和稳定性表现,为无人机控制系统设计提供了有效的仿真验证方法。

xiaoheshang_123的博客 322

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

udp抓包工具_基于iOS的Wireshark抓包实践

奇技指南在应用开发过程中,通过抓包调试服务端接口的场景时常出现。接上次我们分享的Charles抓包,今天,让我们再以iOS为例,聊一聊Wireshark抓包。本文来自360奇舞团QiShare团队给360技术的投稿。接上篇《基于iOS的Charles抓包实践》,Charles是很强大的网络请求抓包工具,常用于抓包HTTP/HTTPS请求。而作者在做IoT项目时,智能硬件配网协议是基于TCP/UDP...

weixin_39711867的博客 968

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: IOS TCP 小例子总结
下一篇: IOS HTTP同步异步
NameUseNsstring
博客等级 码龄11年 1粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值