zoukankan      html  css  js  c++  java
  • ios UDP组播

    这几天在做wifi的智能灯,需要用到组播的知识就把这个记录一下,服务端使用java写的,代码如下:

     1 import java.io.IOException;
     2 import java.net.DatagramPacket;
     3 import java.net.DatagramSocket;
     4 import java.net.InetAddress;
     5 import java.net.MulticastSocket;
     6 
     7  class UDPServer{
     8     public static void main(String[] args)throws IOException{
     9         MulticastSocket  server = new MulticastSocket(5050);
    10         InetAddress address = InetAddress.getByName("224.0.0.1");
    11         server.joinGroup(address);
    12         
    13         
    14         byte[] recvBuf = new byte[100];
    15         DatagramPacket recvPacket 
    16             = new DatagramPacket(recvBuf , recvBuf.length);
    17         
    18         while(true)
    19         {
    20         
    21         server.receive(recvPacket);
    22         String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());
    23         System.out.println("Hello World!" + recvStr);
    24         int port = recvPacket.getPort();
    25         InetAddress addr = InetAddress.getByName("224.0.0.1");
    26         String sendStr = "Hello ! I'm Server";
    27         byte[] sendBuf;
    28         sendBuf = sendStr.getBytes();
    29         DatagramPacket sendPacket 
    30             = new DatagramPacket(sendBuf , sendBuf.length , addr , port );
    31         server.send(sendPacket);
    32         }
    33      
    34         
    35         
    36     }
    37     
    38 }

    ios端的主要代码:

     1 #import "UdpHelper.h"
     2 
     3 @implementation UdpHelper {
     4     AsyncUdpSocket* m_udpSocket;
     5 }
     6 
     7 + (UdpHelper*)getinstance
     8 {
     9 
    10     static UdpHelper* udpHelper = nil;
    11 
    12     static dispatch_once_t onceToken;
    13     dispatch_once(&onceToken, ^{
    14             udpHelper = [[self alloc] init];
    15         
    16         [udpHelper openUDPServer];
    17     });
    18 
    19     return udpHelper;
    20 }
    21 
    22 - (void)openUDPServer
    23 {
    24     AsyncUdpSocket* tempSocket = [[AsyncUdpSocket alloc] initWithDelegate:self];
    25     m_udpSocket = tempSocket;
    26 
    27     NSError* error = nil;
    28     [m_udpSocket bindToPort:5051 error:&error];
    29     [m_udpSocket joinMulticastGroup:@"224.0.0.1" error:&error];
    30 
    31     [m_udpSocket receiveWithTimeout:-1 tag:0];
    32 }
    33 
    34 - (void)sendMessage:(NSString*)message
    35 {
    36     NSMutableString* sendString = [NSMutableString stringWithCapacity:100];
    37     [sendString appendString:message];
    38 
    39     BOOL res = [m_udpSocket sendData:[sendString dataUsingEncoding:NSUTF8StringEncoding]
    40                               toHost:@"224.0.0.1"
    41                                 port:5050
    42                          withTimeout:-1
    43                                  tag:0];
    44 
    45     NSLog(@"%@", sendString);
    46     if (res) {
    47         NSLog(@"xxxxffff");
    48     }
    49     else {
    50         NSLog(@"error");
    51     }
    52 }
    53 
    54 - (BOOL)onUdpSocket:(AsyncUdpSocket*)sock didReceiveData:(NSData*)data withTag:(long)tag fromHost:(NSString*)host port:(UInt16)port
    55 {
    56     NSLog(@"onUdpSocket successful");
    57 
    58     NSString* str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    59 
    60     NSLog(@"%@", str);
    61 
    62     return YES;
    63 }
    64 
    65 - (void)onUdpSocket:(AsyncUdpSocket*)sock didNotSendDataWithTag:(long)tag dueToError:(NSError*)error
    66 {
    67     NSLog(@"error1");
    68 }
    69 
    70 - (void)onUdpSocket:(AsyncUdpSocket*)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError*)error
    71 {
    72     NSLog(@"error2");
    73 }
    74 
    75 @end

    以上的代码就可以实现两端互发消息通信,代码也主要是借鉴了一些别人的

  • 相关阅读:
    水平居中
    flex布局
    get新技能:上传了 flv 或 MP4 文件到服务器,可访问总是出现 “无法找到该页”的 404 错误
    小程序3.8
    小程序3.7
    Vue 中select option默认选中的处理方法
    HTML5 data属性
    静态html返回
    node中可读流、可写流
    node.js fs、http使用
  • 原文地址:https://www.cnblogs.com/jjxxjnzy/p/4240000.html
Copyright © 2011-2022 走看看