最近用wcf 服务 给ios和安卓做接口,做了几个ios的项目  用udp 组播 让ios多终端接收和刷新方法

做一个简单的小例子会把工程给大家下载的

  c#代码:netSocketUDP.rar

ios代码:MyIOSSocketDemo.rar

先用c#做发送

组播IP范围为 224.0.0.0~239.255.255.255

建一个控制台应用程序

private static IPAddress GropuAddress = IPAddress.Parse("224.0.0.2");//IPprivate static int GrupPort = 12001;//端口static void Main(string[] args){for (int i = 0; i < 1000; i++){System.Threading.Thread.Sleep(3000);//等待3秒再发Send("sendMessage"+i.ToString()+"个!");}}public static void Send(string message){

        //不在一个网段也可以收到

        Socket server = new Socket(AddressFamily.InterNetwork,
        SocketType.Dgram, ProtocolType.Udp);
        IPEndPoint iep = new IPEndPoint(IPAddress.Any, 12002);
        IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("224.0.0.2"), 12001);
        server.Bind(iep);

        byte[] data = Encoding.ASCII.GetBytes(message);
        server.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership,
        new MulticastOption(IPAddress.Parse("224.100.0.1")));
        server.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.MulticastTimeToLive, 50);
        server.SendTo(data, iep2);
        server.Close();

}

  顺便把c#接收也说一下(这个可以不用看,因为我们要做的是ios接收)

        static void Main(string[] args){StartListener();           Console.ReadLine();}private static void StartListener(){byte[] b = new byte[10240];try{while (true){System.Threading.Thread.Sleep(500);String multiAddress = "224.0.0.2";//Datagrams.getMultiIPAddress("192.168.2.106");Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 12001);s.Bind(ipep);IPAddress ip = IPAddress.Parse(multiAddress);s.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership,new MulticastOption(ip, IPAddress.Any));s.ReceiveTimeout = 5000;s.Receive(b);string sss = System.Text.Encoding.UTF8.GetString(b).Replace("\0", "").Trim();Console.WriteLine(sss);s.Close();}}catch (Exception ex){Console.WriteLine("receive multicast exception:" + ex.ToString());}}

  

ios接收

ios 用到的一个类库AsyncUdpSocket 这个类库就是发送和接收收  组播的 用起来很方便网上有好多例子我就简单说一下

建一个Single View Application

把AsyncUdpSocket.h 和AsyncUdpSocket.m加到工程里

窗体上放一个文本显示收到的信息

在ViewController.h里加入

#import "AsyncUdpSocket.h"@interface ViewController : UIViewController<AsyncUdpSocketDelegate>

  

@property (strong, nonatomic) IBOutlet UITextField *MyResaveTxt;//页面上的文本
@property (nonatomic,strong) AsyncUdpSocket *udpSocket;
-(void)openUDPServer;

在ViewController.m 里实现

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController
@synthesize udpSocket,MyResaveTxt;
- (void)viewDidLoad
{[super viewDidLoad];[self openUDPServer];// Do any additional setup after loading the view, typically from a nib.
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}
-(void) openUDPServer
{//初始化udpAsyncUdpSocket *tempSocket=[[AsyncUdpSocket alloc] initWithDelegate:self];self.udpSocket=tempSocket;//绑定端口NSError *error = nil;[self.udpSocket bindToPort:12001 error:&error];//发送广播设置[self.udpSocket enableBroadcast:YES error:&error];//加入群里,能接收到群里其他客户端的消息[self.udpSocket joinMulticastGroup:@"224.0.0.2" error:&error];//启动接收线程[self.udpSocket receiveWithTimeout:-1 tag:0];}
//接收
-(BOOL) onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port
{NSString * info=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];MyResaveTxt.text=info;[self.udpSocket receiveWithTimeout:-1 tag:0];//启动接收线程return YES;
}
@end

  c#代码:netSocketUDP.rar

ios代码:MyIOSSocketDemo.rar

补一下发汉字会有乱码

c#用

byte[] data =System.Text.Encoding.Default.GetBytes(message);

ios用

 NSStringEncoding strEncode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);NSString * info=[[NSString alloc] initWithData:data encoding:strEncode ];

ios  URL中文转码

方法1

    NSString *url =@"www.haha.com/这是中文";NSStringEncoding chineseEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);url = [url stringByAddingPercentEscapesUsingEncoding:chineseEncoding];NSLog(@"%@",url);

    NSMutableURLRequest *request = [[NSMutableURLRequestalloc] init];

// 设置URL

[request setURL:[NSURL URLWithString:url]];

// 设置HTTP方法

[request setHTTPMethod:@"GET"];

// 发送同步请求, 这里得returnData就是返回得数据

NSData *data = [NSURLConnectionsendSynchronousRequest:request

returningResponse:nil error:nil];

方法2

- (NSString *)URLEncodedString{ NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)self,NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8);[result autorelease];return result; }

  

ios 接收 c# socket udp 组播相关推荐

  1. UDP 组播---你需要了解这些

    先来了解下UDP UDP 是UserDatagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一 ...

  2. UDP 组播---基本概念

     本文章已收录于: 先来了解下UDP UDP 是UserDatagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式 ...

  3. UDP组播开发测试实例

    一 前言 (1)负责项目中组播开发测试工作.期间由于缺乏设备的原因,中间搁置了好久.直到昨天下午临近下班,终于,完成udp组播整个的开发测试工作. 二 开发过程 (1)首先从实现udp协议说起.udp ...

  4. UDP组播调试(使用TCPUDP调试工具)

    如何使用调试工具进行UDP组播调试 一.下载UDP&TCP调试工具 二.双击打开调试工具并建立端口 2.1 创建组播客户端1 类型:UDP(组播模式):目标IP:225.0.0.20:端口:6 ...

  5. socket(四)–组播

    socket(四)–组播 文章目录 socket(四)--组播 一.简介 二.知识点 2.1 组播地址 三.关键类 3.1 java.net.MulticastSocket 3.2 java.net. ...

  6. 基于stm32f107 stm32cube 和 LWIP 协议实现 udp 组播通信

    最近在做一个基于stm32f107 实现 UDP 组播通信的项目,项目基于 stm32cube 配置生成,如下图: UDP组播头文件: #ifndef __MULTICAST_H__ #define ...

  7. udp组播的应用场景

    参考: <TCP/IP详解 卷一> 单播 unicast 在单播的情况下,任意两个主机的通信不会干扰网内其他主机(可能引起争夺共享信道的情况除外) 广播 有时候一个主机要向网上的所有其他主 ...

  8. Qt UDP组播的应用

    最近学习了组播的应用.组播传输:在发送者和每一接收者之间实现点对多点网络连接.如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包.它能提高了效率.减少了骨干网络出现拥塞的可能性 ...

  9. (转)C# 使用UDP组播实现局域网桌面共享

    转:http://www.cnblogs.com/mobwiz/p/3715743.html 最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. ...

最新文章

  1. php mysql多重筛选,如何使用php、html、mysql构建一个多重分类选择列表
  2. 产品经理如何激发出新的创意
  3. 面试官让我讲下线程的TIMED_WAITING状态,我又笑了
  4. 【Jmeter篇】临界区控制器Critical Section Controller业务流顺序负载压测
  5. PG修改表owner提示must be member of role “pg13“
  6. 【ssm】极简的极省力的开发方式——针对简单型EasyUI的增删改查的后台管理
  7. 安装composer并创建laravel项目流程
  8. MySQL的条件判断函数
  9. 信息系统基础知识---企业信息化与电子商务
  10. 用色环图帮你搞定配色
  11. 对于一个小白来说,遇到的前端问题(3)
  12. Python技巧篇:如何巧妙运用Python处理Word文档
  13. Java高性能序列化工具Kryo序列化
  14. 易乐游装在云服务器_新手搭建云服务器详细过程
  15. python爬虫(20)使用真实浏览器打开网页的两种方法
  16. 任务的同步与通信_读书笔记_6
  17. [ecshop 经验 ]transport.js run error 68ecshop 小京东 火狐提示 同源策略和跨域访问 68ecshop
  18. html 整体缩小zoom,页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
  19. Hadoop运行原理之Spill, Shuffle
  20. 第一个ios应用(2)

热门文章

  1. 从上市公司数据读懂我国新兴产业发展态势
  2. 停电后程序员怎么写代码 | 每日趣闻
  3. 为什么掌握 Linux 对程序员这么重要
  4. 当互联网人决定躺平......
  5. 漫画 | TCP,一个悲伤的故事
  6. 『高级篇』docker之APIGateway(17)
  7. 理解vuex -- vue的状态管理模式
  8. ActFramework 小贴士 - 获得应用版本
  9. mysql主从以及读写分离(科普)
  10. 更清晰的认识对象——深拷贝与浅拷贝