IOS socket GCDAsyncSocket
来源:互联网 发布:mac excel 数据透视图 编辑:程序博客网 时间:2024/06/07 11:33
开源地址:https://github.com/robbiehanson/CocoaAsyncSocket/wiki/Intro_GCDAsyncSocket
怎么样使用:看网站下面的具体使用说明。
封装后的代码;
//
// ClientSocket.h
// GameClientEngine
//
// Created by chao zhang on 12-2-22.
// Copyright (c) 2012骞?hangzhou. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "GCDAsyncSocket.h"
#import "AmfMessage.h"
static const int HEADTAG = 0;
static const int BODYTAG = 1;
@class AmfHandler;
@interface ClientSocket : GCDAsyncSocket <UIApplicationDelegate>
@property(nonatomic,assign)int header;
@property(nonatomic, retain)AmfHandler* amfHandler;
-(BOOL)bind:(NSString*) host onPort:(int)port;
-(void) writer:(AmfMessage*)msg;
-(void)shutdown;
@end
//
// ClientSocket.m
// GameClientEngine
//
// Created by chao zhang on 12-2-22.
// Copyright (c) 2012骞?hangzhou. All rights reserved.
//
#import "ClientSocket.h"
#import "AmfMessageEncoder.h"
#import "AmfMessageDecoder.h"
#import "AmfHandler.h"
@implementation ClientSocket
@synthesize header;
@synthesize amfHandler;
-(id)init{
self = [super initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
header = 4;
amfHandler = [[AmfHandler alloc]init];
return self;
}
-(void)writer:(AmfMessage *)msg{
AmfMessageEncoder* encoder = [[AmfMessageEncoder alloc]init];
NSData * encodeData = [encoder encode:msg];
[self writeData:encodeData withTimeout:-1 tag:2];
}
-(void) socket:(ClientSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
if(tag == 0){
int8_t b[header];
[data getBytes:b length:header];
NSMutableData* tempData = [[NSMutableData alloc] init];
for(int bb=header-1 ;bb > -1;bb--){
int8_t temp = b[bb];
[tempData appendBytes:&temp length:sizeof(temp)];
}
int headlength;
[tempData getBytes:&headlength range:NSMakeRange(0, sizeof(headlength))];
[sock readDataToLength:headlength withTimeout:-1 tag:BODYTAG];
}else if(tag == 1){
AmfMessageDecoder* decoder = [[AmfMessageDecoder alloc]init];
AmfMessage* msg = [decoder decode:data];
[amfHandler messageReceived:msg socket:self];
[sock readDataToLength:header withTimeout:-1 tag:HEADTAG];
}
}
-(BOOL)bind:(NSString *)host onPort:(int)port{
NSError *error = nil;
if(![self connectToHost:host onPort:port error:&error]){
NSLog(@"Error connecting: %@", error);
return NO;
}else{
[self readDataToLength: header withTimeout:-1 tag:HEADTAG];
return YES;
}
}
-(void)shutdown{
[self disconnect];
}
@end
- IOS socket GCDAsyncSocket
- IOS socket GCDAsyncSocket
- IOS socket GCDAsyncSocket
- iOS socket第三方库 AsyncSocket(GCDAsyncSocket)
- iOS的GCDAsyncSocket快速开发Socket通信
- iOS 基于GCDAsyncSocket快速开发Socket通信
- iOS用GCDAsyncSocket开发Socket通信
- iOS GCDAsyncSocket
- 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- 【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- (六十五)iOS的socket实现(GCDAsyncSocket)
- 46.【IOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- iOS socket 连接第三方库asyncsocket 和GCDasyncsocket
- 【iOS网络通信】socket第三方库 AsyncSocket(GCDAsyncSocket)
- iOS Socket/Tcp编程 GCDAsyncSocket的实战(带回调)
- Android数据Json解析之开源jar类Gson解析
- 排序算法--希尔算法
- 设计模式C++实现(2)——策略模式
- 什么是游戏2048的最佳算法
- 双向链表 只使用一个指针
- IOS socket GCDAsyncSocket
- 仿Title样式
- 我的七个建议
- LeetCode Triangle
- IO多路复用之poll总结
- 万网服务器ftp上传出现553 Could not create file
- android.os.NetworkOnMainThreadException
- 监听器启动时报错:TNS-12537: TNS:connection closed/ TNS-00507: Connection closed
- PostgreSQL 遍历表的PLSQL列举