//
// 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