CAsysncSocket 之--tcp工具--AsyncSocket 用法
来源:互联网 发布:雅虎奇摩输入法 mac 编辑:程序博客网 时间:2024/06/15 09:58
============================================================
博文原创,转载请声明出处
电子咖啡(原id蓝岩)
============================================================
详解iPhone 下AsyncSocket网络库编程是本文要介绍的内容,iphone的标准推荐CFNetwork C库编程.但是编程比较烦躁。在其它OS往往用类来封装的对Socket函数的处理。比如MFC的CAsysncSocket.在iphone也有类似于开源项目.cocoa AsyncSocket库
ok,试试吧
官方网站:http://code.google.com/p/cocoaasyncsocket/
这里只上例子,自己在项目中使用的,绝对能使用,如果有疑问,欢迎留言讨论。
----------------
注意,CAsysncSocket已经将tcp、udp的连接异步化处理,所以你只管在主线程调用即可
将AsyncSocket.h AsyncSocket.m 导入到你的工程中,
在自己建立的util中,加入一下代码
#pragma mark tcp- (void) connectToHost:(NSString*)host port:(int)port { socket = [[AsyncSocket alloc] initWithDelegate:self]; //设置回调的delegate //TODO 这里需要在退出局域网模式下断开 [socket disconnect]; //断开tcp连接// socket NSLog(@"tcp connecting to host:%@,port:%d",host,port); @try { [socket connectToHost:host onPort:port error:nil]; [socket readDataWithTimeout:-1 tag:1]; //这只超时,如果timeout为负数,则永远不超时 } @catch (NSException *exception) { //异常处理 NSLog(@"connect exception %@,%@", [exception name], [exception description]); }}//相应的回调函数- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{ NSLog(@"did connect to host %@:%d", host, port);}- (void)sendMessage:(NSString*)msg { NSLog(@"tcp send msg:%@", msg); [socket readDataWithTimeout:SOCKET_TIMEOUT tag:1]; [socket writeData:[msg dataUsingEncoding:NSUTF8StringEncoding] withTimeout:SOCKET_TIMEOUT tag:1];}- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{ NSString* message = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]autorelease]; NSLog(@"%f receive ReadData is: %@",[[NSDate date] timeIntervalSince1970],message); }-(NSTimeInterval)onSocket:(AsyncSocket *)sock shouldTimeoutReadWithTag:(long)tag elapsed:(NSTimeInterval)elapsed bytesDone:(NSUInteger)length{ NSLog(@"onSocket:shouldTimeout-ReadWithTag:-----------"); return 0;}-(NSTimeInterval)onSocket:(AsyncSocket *)sock shouldTimeoutWriteWithTag:(long)tag elapsed:(NSTimeInterval)elapsed bytesDone:(NSUInteger)length{ NSLog(@"onSocket:shouldTimeout-WriteWithTag:-----------"); return 0;}-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag{ NSLog(@"didWriteDataWithTag tag:%ld",tag);}-(void)onSocketDidDisconnect:(AsyncSocket *)sock{ NSLog(@"onSocketDidDisconnect sock:%@",sock); [viewController onLocalDisconnect:0]; }
ok,试试吧
- CAsysncSocket 之--tcp工具--AsyncSocket 用法
- CAsysncSocket 之--udp工具--AsyncUdpSocket 用法
- CAsysncSocket 之--udp工具--AsyncUdpSocket 用法
- 第三方开源类库AsyncSocket-TCP
- AsyncSocket实现TCP连接
- asyncsocket的用法
- AsyncSocket的用法
- AsyncSocket实现tcp/ip的通讯协议
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- AsyncSocket
- iOS之AsyncSocket使用心得
- 第四十八节 java学习——异常
- VISIO生成流程图、结构图(矢量图)
- MVC+Jquery easyui实现无限级部门示例
- 二维数组名作为实参或者形参
- ASP调用带参数存储过程的几种方式
- CAsysncSocket 之--tcp工具--AsyncSocket 用法
- 找出二元树中和为某一值的所有路径
- 迈向J2EE之规划篇
- grep的用法
- mvc模式中mystruts.xml的解析案例
- [gkk]3天学习ai
- 终于就“带宽不足”下了文,并做了强制性国家标准
- Ueditor上传图片出现未知错误或者保存图片失败
- 33.Windbg-VMware+windbg搭建双机调试(增加virtualKD)