CocoaAsyncSocket无疑是目前封装得最完善的Socket库了:支持异步TCP/UDP,支持GCD,Objective-C接口封装,同时还有日志跟踪功能,使用此日志跟踪,程序员可以很方便的进行调试。

文件如下:

 

如果想打开日志调试,很简单,导入需要的DDASLLogger.h头文件,创建DDASLLogger单利对象就可以了。

简单的演示如下:

1.在故事版布局

2.在ViewController.h文件中

//  ViewController.h
// AysnSocket #import <UIKit/UIKit.h>
#import "AsyncSocket.h" @interface ViewController : UIViewController
{
NSMutableArray *_scokets; //存放客户端的可变数组
AsyncSocket *_sendSocket; //发送端
AsyncSocket *_receScoket; //接收端
}
@end

3.在ViewController.m文件中

//  ViewController.m
// AysnSocket #import "ViewController.h"
#import "AsyncSocket.h" @interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *msgView;
@property (weak, nonatomic) IBOutlet UITextField *ipField;
@property (weak, nonatomic) IBOutlet UITextField *sendField;
- (IBAction)coneClicked:(UIButton *)sender; //连接服务器
- (IBAction)sendClicked:(UIButton *)sender; //发送端发送消息
- (IBAction)disConeClicked:(UIButton *)sender; //断开连接
@end @implementation ViewController
@synthesize msgView;
@synthesize ipField;
@synthesize sendField; - (void)viewDidLoad {
[super viewDidLoad]; //1.初始化scokets数组,存储新的客户端scoket
_scokets = [NSMutableArray array]; //2.实例化发送端和接收端
_sendSocket = [[AsyncSocket alloc]initWithDelegate:self];
_receScoket = [[AsyncSocket alloc]initWithDelegate:self]; //3.接收端开始监听网络
NSError *error;
[_receScoket acceptOnPort: error:&error];
} #pragma mark - 代理方法
//接受到新的scoket
- (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
{
//将新接收到的socket加入数组中
[_scokets addObject:newSocket]; //开始接受数据
[newSocket readDataWithTimeout:- tag:];
} //接收端收到信息
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
//接收数据
NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; //格式化数据
self.msgView.text = [NSString stringWithFormat:@"%@,%@,%@",self.msgView.text,self.ipField.text,string]; //循环读取
[sock readDataWithTimeout:- tag:];
} //连接服务器成功
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"%@",host);
NSLog(@"连接服务器成功");
} //断开服务器成功
-(void)onSocketDidDisconnect:(AsyncSocket *)sock
{
NSLog(@"断开连接成功");
} #pragma mark - 按钮事件
//建立连接
- (IBAction)coneClicked:(UIButton *)sender { if (_sendSocket.isConnected)
{
[_sendSocket disconnect];
} //客户端重新连接到主机
[_sendSocket connectToHost:self.ipField.text onPort: withTimeout: error:nil];
} //发送消息
- (IBAction)sendClicked:(UIButton *)sender { //客户端发送数据
NSData *data = [self.sendField.text dataUsingEncoding:NSUTF8StringEncoding];
[_sendSocket writeData:data withTimeout: tag:]; //清空数据
self.sendField.text = @"";
} //断开服务器
- (IBAction)disConeClicked:(UIButton *)sender
{
if (_sendSocket.isConnected)
{
[_sendSocket disconnect];
}
}
@end

测试如下:

(1)打开电脑的网络设置,看一下ip和设置端口为8888

(2)运行程序,在演示中输入ip和消息

一开始:                             输入ip和消息,然后连接服务器

 

连接成功服务器成功                           发送消息,数据发送成功

 

断开服务器:

断开服务器后,再尝试发送数据,是无法发送并显示在UITextView上的。

iOS:基于Socket的第三方框架CocoaAsyncSocket的使用的更多相关文章

  1. iOS开发之常用第三方框架(下载地址,使用方法,总结)

    iOS开发之常用第三方框架(下载地址,使用方法,总结) 说句实话,自学了这么久iOS,如果说我不知道的但是又基本上都摸遍了iOS相关知识,但是每次做项目的时候,遇到难一点的地方或者没试过的东西就闷了. ...

  2. iOS开发常用的第三方框架

    1. AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目.AFNetworking是一个轻量级的iOS.Mac OS X网络通信类库,现在是G ...

  3. iOS:网络编程的第三方框架:AFNetworking、SDWebImage

    网络编程第三方框架:AFNetworking.SDWebImage 介绍:这些框架是开源的,经过前人的封装.改进,成为使用次数很多的一个性能好的源代码框架,只需要将它导入项目中,就可以使用.因此,在做 ...

  4. IOS Socket 04-利用框架CocoaAsyncSocket实现客户端/服务器端

    这篇文章,我们介绍CocoaAsyncSocket框架的使用,主要介绍实现客户端/服务器端代码,相信在网上已经很多这样的文章了,这里做一下自己的总结.这里介绍使用GCD方式 一.客户端 1.下载地址 ...

  5. IOS一些高效的第三方框架库

    MBProgressHUD ——进展指示符库 苹果的应用程序一般都会用一种优雅的,半透明的进度显示效果,不过这个API是不公开的,因此你要是用了,很可能被清除出AppStore.而 MBProgres ...

  6. 提高iOS开发效率的第三方框架等--不断更新中。。。

    1. Mantle Mantle 让我们能简化 Cocoa 和 Cocoa Touch 应用的 model 层.简单点说,程序中经常要进行网络请求,请求到得一般是 json 字符串,我们一般会建一个 ...

  7. iOS 基于Socket 的 C/S 网络通信结构(下一个)

    以前实现简单 Server 程序,服务端通过 void WriteStreamClientCallBack(CFWriteStreamRef stream, CFStreamEventType eve ...

  8. IOS 极光推送(第三方框架)

    下载极光推送文件,将以下两个文件导入项目中 APService.h libpushSDK.a #import "HMAppDelegate.h" #import "APS ...

  9. 提高iOS开发效率的第三方框架等

    http://zhangmingwei.iteye.com/blog/2208783 http://www.kuqin.com/shuoit/20150703/346900.html

随机推荐

  1. google code-prettify 代码高亮插件使用方法

    找代码高亮插件选了好久,还是这个使用起来比较方便. 先上链接:插件下载地址 官方使用方法地址 建议看官方的资料,我这里仅仅简要描述一下使用方法: 引入方法: 测试引入是否成功:herf 换成 自己放置 ...

  2. JMX monitor weblogic 总结

    https://blog.csdn.net/joy_91/article/details/42774839

  3. AC日记——送花 洛谷 P2073

    送花 思路: 线段树: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 struct TreeN ...

  4. CentOS7下python工作环境管理

    一.pyenv管理不同的python版本1.下载安装git clone git://github.com/yyuu/pyenv.git ~/.pyenv  echo 'export PYENV_ROO ...

  5. LoadRunner运行中的mmdrv和mdrv

    在LoadRunner运行脚本过程中,在任务管理器中我们可以看到有一个或多个名为“mmdrv”的进程在运行,与此同时当我们查看LoadRunner\bin目录下的文件时还会看到一个“mdrv.exe” ...

  6. OpenStack 存储服务 Cinder介绍和控制节点部署 (十三)

    Cinder介绍 OpenStack块存储服务(cinder)为虚拟机添加持久的存储,块存储提供一个基础设施为了管理卷,以及和OpenStack计算服务交互,为实例提供卷.此服务也会激活管理卷的快照和 ...

  7. POJ 2777.Count Color-线段树(区间染色+区间查询颜色数量二进制状态压缩)-若干年之前的一道题目。。。

    Count Color Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 53312   Accepted: 16050 Des ...

  8. vijos1889:天真的因数分解

    题目链接 vijos1889:天真的因数分解 题解 同bzoj2440: [中山市选2011]完全平方数 就是改成了求有平方因子数,依旧考虑二分,只是把容斥系数取一下相反数,也就是把莫比乌斯函数求一个 ...

  9. 【推导】【构造】XVII Open Cup named after E.V. Pankratiev Stage 14, Grand Prix of Tatarstan, Sunday, April 2, 2017 Problem E. Space Tourists

    给你n,K,问你要选出最少几个长度为2的K进制数,才能让所有的n位K进制数删除n-2个元素后,所剩余的长度为2的子序列至少有一个是你所选定的. 如果n>K,那么根据抽屉原理,对于所有n位K进制数 ...

  10. Idea集成svn

    Idea集成svn 既然要使用svn,首先需要下载一个 svn的客户端,到这里下载对应的安装程序:http://subversion.apache.org/packages.html#windows ...