UdpSocket如何实现通过代理接收多包数据

//
//  SCUdpSocket.m
//  vdr
//
//  Created by mijibao on 15/8/24.
//  Copyright (c) 2015年 jzkj. All rights reserved.
//

#import "SCUdpSocket.h"

@interface SCUdpSocket() <AsyncUdpSocketDelegate>
{
    AsyncUdpSocket *udpSocket;

}
@end

@implementation SCUdpSocket

+ (id)shareUdpSocket{
    static SCUdpSocket *_sharedUdpSocket = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedUdpSocket = [[SCUdpSocket alloc] init];
    });
    return _sharedUdpSocket;
}
- (NSMutableDictionary *)didReceiveMessage:(NSData *)data{
    NSString * str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"str : %@",str);
    //切割消息体
    NSArray *array = [str componentsSeparatedByString:@"\r\n"];
    NSArray *arraydata = [str componentsSeparatedByString:@"\r\n\r\n"];
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    [dic setObject:array[0] forKey:@"head"];
    if (arraydata.count>1) {
        [dic setObject:[(NSString*)arraydata[1] dataUsingEncoding:NSUTF8StringEncoding] forKey:@"body"];
    }
    return dic;

}


- (void)sendMessageHeader:(NSString *)messageStr delegate:(id)delegate {
    
    udpSocket = [[AsyncUdpSocket alloc]initWithDelegate:self];
    [udpSocket enableBroadcast:YES error:nil];
    [udpSocket bindToPort:SRV_PORT error:nil];
    [udpSocket receiveWithTimeout:-1 tag:100];
    _delagate =delegate;
    [udpSocket sendData:[messageStr dataUsingEncoding:NSUTF8StringEncoding] toHost:SRV_ADDR port:SRV_PORT withTimeout:-1 tag:100];
}

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port
{
    static int i=0;
    NSLog(@"发包数 : %d",i);
    NSMutableDictionary *dic = [self didReceiveMessage:data];
    if ([self.delagate respondsToSelector:@selector(getSeverMessage:)]) {
        [self.delagate getSeverMessage:dic];
    }
    return NO;  //这里为NO,才能连续接收多包数据
}


@end
//
//  SCUdpSocket.h
//  vdr
//
//  Created by mijibao on 15/8/24.
//  Copyright (c) 2015年 jzkj. All rights reserved.
//
#import "BaseViewController.h"
#import <Foundation/Foundation.h>
#import <AsyncUdpSocket.h>

@protocol SCUdpSocketDelegate <NSObject>

- (void)getSeverMessage:(NSDictionary *)dictionary;

@end

@interface SCUdpSocket : NSObject

+ (id)shareUdpSocket;
- (void)sendMessageHeader:(NSString *)messageStr delegate:(id)delegate;
@property (nonatomic,weak)id <SCUdpSocketDelegate> delagate;

@end
//
//  ConningViewController.m
//  vdr
//
//  Created by mijibao on 15/8/14.
//  Copyright (c) 2015年 jzkj. All rights reserved.
//

#import "ConningViewController.h"
#import "ConningView.h"
#import "SCUdpSocket.h"
#import "CommonCore.h"
@interface ConningViewController ()<SCUdpSocketDelegate>


@end

@implementation ConningViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
<pre name="code" class="objc">    //请求conning数据
    NSString *messageStr = @"Query conning HLD_SIP/1.0\r\nDestination: 9714525\r\n\r\n";
    [[SCUdpSocket shareUdpSocket]sendMessageHeader:messageStr delegate:self];

}#pragma -mark SCUdpSocketDelegate- (void)getSeverMessage:(NSDictionary *)dictionary{ NSLog(@"消息体内容 : %@",dictionary);}
 
@end



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值