iOS- 移动端Socket UDP协议广播机制的实现
1.前言
2.UDP广播机制的实现
2.1.服务器端(iPad)的实现
2.1.1.先去github上下载 AsyncUdpSocket.h框架包
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.255
- NSString *str = @"谁是服务器?我的IP是:192.168.80.103";
- NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
- [asyncUdpSocket sendData:data
- toHost:@"255.255.255.255
- port:9527
- withTimeout:-1
- tag:0];
作者: 清澈Saup
出处:http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。
iOS- 移动端Socket UDP协议广播机制的实现的更多相关文章
- iOS 利用Socket UDP协议广播机制的实现
1.前言 什么是UDP协议广播机制? 举一个例. 比如在一群人群中,一个人要找张三,于是你向人群里大喊一声(广播):"谁是张三" 假设它是张三,它就会回应你.在网络中也是一样的. ...
- Unity3d之Socket UDP协议
原文地址:http://blog.csdn.net/dingkun520wy/article/details/49201245 (一)Socket(套接字)UDP协议的特点 1.是基于无连接的协议,没 ...
- Android为TV端助力 UDP协议
废话不多说.直接上代码! 一. 接收端 1.创建UDP连接 public void init() { try { //开关的作用 isRunning = true; DatagramSocket mU ...
- Android为TV端助力:UDP协议(接收组播和单播)
private static String MulticastHost="224.9.9.98";private static int POST=19999;private sta ...
- socket模块实现基于UDP聊天模拟程序;socketserver模块实现服务端 socket客户端代码示例
socket模块 serSocket.setblocking(False) 设置为非阻塞: #coding=utf-8 from socket import * import time # 用来存储所 ...
- tcp和udp协议的聊天 和udp协议的时间同步机制-----编码
tcp协议聊天 服务端:: 客户端 udp协议的聊天 ############ udp协议 ########### 服务器 import socket sk = socket.socket(type ...
- udp协议基础(转自疯狂java讲义)
第17章 网络编程 17.4 基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...
- java 25 - 4 网络编程之 UDP协议传输思路
UDP传输 两个类:DatagramSocket与DatagramPacket(具体看API) A:建立发送端,接收端. B:建立数据包. C:调用Socket的发送接收方法. D:关闭Socket. ...
- day30 UDP协议
本周安排 周二 socket编程 周三 粘包处理 周四 选课系统 并发编程 周五多道技术 多进程 周六 IPC 互斥锁 常用模块 os* 操作系统 多数是文件操作 os.path 处理文件路径 shu ...
随机推荐
- go加密算法:非对称加密(二)--Hash
关于一些加密算法的应用和信息,可以在以下博客中查找到: https://www.cnblogs.com/charlesblc/p/6130141.html // MyHash package main ...
- Final,finally,finalize区别
final— 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为f ...
- 浅析BFC布局的概念以及作用
BFC的概念以及作用 BFC的定义: (Block formatting context)直译为"块级格式化上下文".它是一个独立的渲染区域,只有Block-level box参与 ...
- linux chrom 系统无法读取用户偏好配置无需删除.config配置文件
鬼使神差的使用了root权限启用了一下浏览器,再次打开就出现了这样的状况. 百度搜索了一下解决方案 几乎都是同一篇 需要删除/.config/google-chrome文件 才能正常启动. 那么如 ...
- 使用bison和yacc制作脚本语言(2)
我们先来想一下语法 一般脚本语言不需要定义类型直接在赋值的时候确定 我们主要考虑一下变量的类型 a = 1; b = 1.1; c = "str"; 一般来讲,我们使用这三种类型, ...
- 使用Goland同步远程代码
新版本的goland貌似已经有了Deployment功能,故本篇文章描述的方法也不推荐使用了 以前写php时候习惯使用phpstorm这个编译器,除去本身功能强大不说,比较方便的是其自身带的Deplo ...
- python--复习之路的目录
想要看时点链接看看,常来复习,温故而知新,可以为师矣. 1:基本类型 python--基本类型之字符串 python--基本类型之列表 python--基本类型之元组 python--基本类型之集合 ...
- PHP实现识别带emoji表情的字符串
function have_special_char($str) { $length = mb_strlen($str); $array = []; for ($i=0; $i<$length; ...
- 20145234黄斐《Java程序设计》第九周学习总结
教材学习内容总结 JDBC Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语 ...
- 宁波Uber优步司机奖励政策(8月10号-16号)
本周奖励: 8月10日-8月16日: 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://w ...