ios开发UDP协议发送广播寻找设备

代码链接  http://i.cnblogs.com/EditPosts.aspx?opt=1

#import "AsyncUdpSocket.h"

#import <ifaddrs.h>

#import <arpa/inet.h>

//做udp 请求

-(void)MakeUDP

{

//实例化

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

//启动本地端口

[socket localPort];

NSTimeInterval timeout=1000;//发送超时时间

NSString *[email protected]"dongqiangfei";//发送给服务器的内容

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

UInt16 port=6000;//端口

NSError *error;

//发送广播设置

[socket enableBroadcast:YES error:&error];

//@"10.10.60.255"

//把得到的目标ip 最后的数字更换为255(意思是搜索全部的)

NSArray *strArr=[[self getIPAddress] componentsSeparatedByString:@"."];

NSMutableArray *muArr = [NSMutableArray arrayWithArray:strArr];

[muArr replaceObjectAtIndex:(strArr.count-1) withObject:@"255"];

NSString *finalStr = [muArr componentsJoinedByString:@"."];//目标ip

/*

发送请求

sendData:发送的内容

toHost:目标的ip

port:端口号

timeOut:请求超时

*/

BOOL _isOK = [socket sendData :data toHost:[NSString stringWithFormat:@"%@",finalStr] port:port withTimeout:timeout tag:1];

if (_isOK) {

//udp请求成功

}else{

//udp请求失败

}

[socket receiveWithTimeout:1000 tag:0];//启动接收线程 - n?秒超时

NSLog(@"开始啦");

}

//接受信息

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

NSString* result;

result = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

NSLog(@"%@",result);

NSLog(@"%@",host);

NSLog(@"收到啦");

return NO;

}

//接受失败

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

NSLog(@"没有收到啊 ");

}

//发送失败

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

NSLog(@"%@",error);

NSLog(@"没有发送啊");

}

//开始发送

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

NSLog(@"发送啦");

}

//关闭广播

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

NSLog(@"关闭啦");

}

#pragma mark 获取当前IP

- (NSString *)getIPAddress {

NSString *address = @"error";

struct ifaddrs *interfaces = NULL;

struct ifaddrs *temp_addr = NULL;

int success = 0;

// retrieve the current interfaces - returns 0 on success

success = getifaddrs(&interfaces);

if (success == 0) {

// Loop through linked list of interfaces

temp_addr = interfaces;

while(temp_addr != NULL) {

if(temp_addr->ifa_addr->sa_family == AF_INET) {

// Check if interface is en0 which is the wifi connection on the iPhone

if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {

// Get NSString from C String

address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];

}

}

temp_addr = temp_addr->ifa_next;

}

}

// Free memory

freeifaddrs(interfaces);

return address;

}

时间: 2024-10-07 23:25:57

ios开发UDP协议发送广播寻找设备的相关文章

iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConnection的使用,如有需要了解NSURLConnection如何发送请求. 详细信息,请参考:http://www.cnblogs.com/wendingding/p/3813706.html 3)本文示例代码发送的请求均为http请求,已经对info.plist文件进行配置. 如何配置,请参考:

iOS开发网络篇—发送json数据给服务器以及多值参数

iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 代码示例: 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYViewController 8 9 - (void)viewDidLoad 10

Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接收数据:       • 创建接收端的Socket对象      • 创建数据包,接收数据(接收容器)      • 调用Socket对象的接收方法,接收数据包      • 解析数据包,并显示在控制台      • 释放资源 2. 代码实现 (1)首先我们先写发送端的程序,如下: 1 packag

iOS开发:在多平台、设备及64位架构上运行

最近在新工程上线是遇到很多适配的问题,尤其是旧工程64位设备的适配,现在整理一下. Base SDK vs. Deplyment Target 1.配置Base SDK设置 1)选择工程导航面板上的工程文件 2)编辑面板上搜索base sdk Base SDK设置引导编译器使用该版本的SDK编译和构建应用,也就是说,它会直接控制应用使用哪些API. 2.Deplyment Target运行应用需要的最低操作系统版本 支持多个SDK时的注意事项: 框架的可用性有时新的SDK会增加一个完整框架,较早

Android(java)学习笔记80:UDP协议发送数据

UDP协议发送数据:我们总是先运行接收端,再运行发送端发送端: 1 package cn.itcast_02; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 /* 8 * UDP协议发送数据: 9 * A:创建发送端Socket对象 10 * B:创建数据,并把数据打包 11 *

iOS开发-HTTP协议

HTTP协议,即超文本传输协议(Hypertext transfer protocol). HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型.HTTP是一个无状态的协议. 在Internet中所有的传输都是通过TCP/IP进行的.HTTP协议作为TCP/IP模型中应用层的协议也不例外.HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS. HTTP协议的主要特点可概括如下:1.支持客户/服务器模式.支持基本认证和

ios开发——实用技术篇OC篇&amp;获取设备唯一标识

获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS7中也失效了. IOS系统中,获取设备唯一标识的方法有很多: 一.UDID(Unique Device Identifier) UDID的全称是Unique Device Identifier,顾名思义,它就是苹果IOS设备的唯一识别码,它由40个字符的字母和数字组成. 二.UUID(Univers

Java之UDP协议 发送与接收简单实现代码

SendDemo: package com.renhongwei.demo_01; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /* * UDP数据发送端 */

iOS开发HTTP协议相关知识总结

HTTP原理 什么是URL URL中常见的几种协议 什么是HTTP协议 HTTP是做什么的 为什么要使用HTTP协议 HTPP协议的通信过程介绍 HTTP请求 HTTP响应 HTTP请求的选择 两种发送请求方式的比较(应用场景) GET请求 POST请求 怎么发送HTTP请求 苹果原生的发送方式 通过第三方框架 1. 什么是URL 在介绍HTTP之前,我们对URL有一定的了解的,因为只有通过URL我们才能拿到网络上的资源.那么究竟什么是URL? URL(Uniform Resource Loca