iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备
来源:互联网 发布:淘宝潮男鞋店铺推荐 编辑:程序博客网 时间:2024/04/30 22:04
- 1.前言 什么是UDP协议广播机制?举一个例, 例如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):“谁是张三”如果它是张三,它就会回应你,在网络中也是一样的。UDP广播机制的应用场景:若干个客户端,在局域网内(不知道IP的情况下) 需要在很多设备里需找特有的设备,比如服务器,抑或是某个打印机,传真机等。假设我现在准备将服务器装在永不断电的iPad上。若干个客户端iPhone 一激活,就要来向所有设备广播,谁是服务器,是服务器的话,请把IP地址告诉我。然后我就去连接,然后进入长连接,后台接受消息。2.UDP广播机制的实现注:iPad:服务器端 iPhone:客户端2.1.服务器端(iPad)的实现2.1.2.初始化udp@interface QCViewController (){AsyncUdpSocket *asyncUdpSocket;}asyncUdpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];2.1.3.绑定端口NSError *err = nil;[asyncUdpSocket enableBroadcast:YES error:&err];[asyncUdpSocket bindToPort:9527 error:&err];//启动接收线程[asyncUdpSocket receiveWithTimeout:-1 tag:0];2.1.4.实现代理方法//已接收到消息- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{if(data是找服务器的){//根据客户端给的IP,利用TCP或UDP 相互连接上就可以开始通讯了} return YES;}//没有接受到消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{}//没有发送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error{}//已发送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{}//断开连接-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{}2.2.客户端(iPhone)的实现注:实现步骤与服务器端相似2.2.1.初始化udp@interface QCViewController (){AsyncUdpSocket *asyncUdpSocket;}asyncUdpSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];2.2.2.绑定端口NSError *err = nil;[asyncUdpSocket enableBroadcast:YES error:&err];[asyncUdpSocket bindToPort:9527 error:&err];2.2.3.实现代理方法//已接收到消息- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{return YES;}//没有接受到消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{}//没有发送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error{}//已发送出消息-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{}//断开连接-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{}2.2.4.广播寻找注:广播iP地址为 255.255.255.255NSString *str = @"谁是服务器?我的IP是:192.168.80.103";NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];[asyncUdpSocket sendData:datatoHost:@"255.255.255.255port:9527withTimeout:-1tag:0];
0 0
- iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备
- iOS 怎样通过UDP发送广播寻找设备,拿到局域网的设备ip 和 端口
- 通过UDP广播获取网络中所有设备ip地址
- windows C++ 通过UDP广播获取网络中所有设备ip地址
- QT 通过UDP广播获取网络中所有设备ip地址
- windows C++ 通过UDP广播获取网络中所有设备ip地址
- 通过UDP广播自动获取IP地址
- iOS 获取设备ip地址
- iOS获取设备IP地址
- iOS获取设备IP地址
- 通过openwrt查看连接手机设备的IP,MAC地址,设备名
- C# 怎样通过ip和端口向一台设备发送指令
- iOS获取设备信息,MAC地址,IP地址,设备名称
- 同wifi环境下android设备自动获取socket服务端的ip地址和端口号的方法-UDP广播
- 局域网主机广播寻找设备
- 通过网线直连设备获取设备IP地址
- Udp广播发现局域网设备
- 获取iOS设备当前ip地址
- c++ 组合模式
- 解决透明NavigationBar底部出现莫名其妙横线问题
- java面向对象之向上转型和向下转型
- SIMD(MMX/SSE/AVX)变量命名规范心得
- ACE日志系统
- iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备
- 在aix环境中用java实现自动发邮件告警
- C++之tinyXML的使用详解
- Codeforces-Gadget Hackwrench-LCA最近公共祖先
- TiXmlHandle的使用-简化tinyxml的代码
- tinyxml源码解析(中)
- tinyxml源码解析(上)
- ADT的配置环境
- STL使用总结