AsyncSocket 使用
今天使用AsyncSocket模拟及时通信,在这里记录一下,免得以后自己又犯相同的错误
1>创建客户端和服务器socket
/**
* 设置socket
*/
- (void)setupSocket
{
//1.客户端socket
_clientSocket = [[AsyncSocket alloc] initWithDelegate:self];
//2. 启用定时器连接服务器 [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(tryToConnect:) userInfo:nil repeats:YES]; //3.实例化服务器
_serverSocket = [[AsyncSocket alloc] initWithDelegate:self]; [_serverSocket acceptOnPort: error:nil];
}
定时器代码:
- (void)tryToConnect:(NSTimer *)timer
{
if ([_clientSocket isConnected]) {
[timer invalidate];
return;
}
NSString *host = @"10.0.185.132";
UInt16 port = ;
[_clientSocket connectToHost:host onPort:port withTimeout:- error:nil];
}
2>实现协议回调方法
#pragma mark - socket协议 - (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket
{
NSLog(@"接收到新的socket连接");
[_connectArray addObject:newSocket];
[newSocket readDataWithTimeout:- tag:];
}
/*
* 客户端连接服务器失败时的回调
*/
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
NSLog(@"客户端连接失败,错误信息:%@", [err localizedDescription]);
} /*
* 客户端连接服务器成功时的回调
*/
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"客户端连接成功:host:%@ port :%d", host, port);
} //接收客户端发送过来的数据 - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
NSString *message =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; [self sendMessage:message messageType:MessageTypeOther]; //特别注意这句话一定要写,不然只会读取第一条数据,写这句话表示不停的等待读取数据
[sock readDataWithTimeout:- tag:];
}
3>发送信息
NSData *data = [text dataUsingEncoding:NSUTF8StringEncoding];
//发送消息
if ([_clientSocket isConnected]) {
[_clientSocket writeData:data withTimeout: tag:];
}else{
NSLog(@"连接断开");
//尝试重新连接
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(tryToConnect:) userInfo:nil repeats:YES];
}
AsyncSocket 使用的更多相关文章
- IOS使用Asyncsocket进行socket编程
iphone的标准推荐CFNetwork C库编程.但是编程比较烦躁.在其它OS往往用类来封装的对Socket函数的处理.比如MFC的CAsysncSocket.在iphone也有类似于开源项目.co ...
- IOS AsyncSocket
导入AsyncSocket.h AsyncSocket.m AsyncUdpSocket.h AsyncUdpSocket.m 以及 CFNetWork.framework async ...
- iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)
Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...
- AsyncSocket的使用
AsyncSocket使用流程 安装AsyncSocket 拷贝AsyncSocket类到项目 使用AsyncSocket set delegate @interface NetWork : NSOb ...
- iOS_SN_Socket - AsyncSocket
转载文章,原地址:http://yimouleng.com/2015/02/04/Socket-AsyncSocket/ 一.前言 公司的项目用到了Socket编程,之前在学习的过程当中,用到的更多的 ...
- iOS开发之AsyncSocket使用教程
用socket可以实现像QQ那样发送即时消息的功能.客户端和服务端需要建立长连接,在长连接的情况下,发送消息.客户端可以发送心跳包来检测长连接. 在iOS开发中使用socket,一般都是用第三方库As ...
- AsyncSocket的长连接使用
使用背景:需要跟服务器长期保持连接进行即时通讯:还有在跟智能硬件建立实时链接进行同步智能硬件的状态等,最近我就做项目就碰到需要实时更新智能硬件的状态(比如智能硬件的电量,以及其它工作状态),跟智能硬件 ...
- AsyncSocket长连接棒包装问题解决
project正在使用长连接快来server沟通.因此,指定我们的协议前两个字节为数据长度来区分数据包 app这边数据有两种传输形式: 1.app主动请求所须要的数据: 2.app异步接收来自服务端的 ...
- iOS开发之即时通讯之Socket(AsyncSocket)
1.AsyncSocket介绍 如果需要在项目中像QQ微信一样做到即时通讯,必须使用socket通讯. iOS中Socket编程的方式: BSD Socket: BSD Socket 是UNIX系统中 ...
随机推荐
- 强制删除正在连接的Oracle用户,以删除SDE用户为例
. 有时候想强制删除一个已经连接的Oracle用户,不能直接删除,可以用Kill会话信息. 比如今天想删除一个被连接的SDE用户,可以用以下方法删除一个“正在被连接”的用户. 1.查看所有用户的会话信 ...
- docker 私有仓库镜像的存储位置
docker 私有仓库的镜像 是存储在5739360d1030 registry "docker-registry" 3 days ago Up 28 hours 0.0.0.0: ...
- Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网
Trunk Club:颠覆男士时装零售的创业公司_第1页_福布斯中文网 Trunk Club:颠覆男士时装零售的创业公司
- Float类型在SQL中计算
- SQL知识三(Day 27)
大家好,好几天都没写博客了.因为自己的一些原因,落下了很多.今天没有学什么新的知识,自己就把以前落下的好好看了一下.好了,今天就先总结一下SQL剩下的一些知识吧. 主要学的知识有:循环语句(case语 ...
- EasyUI easyui-combobox 重复发送请求
今天在做个EasyUI easyui-combobox 下拉框动态连级的时候发现在选择一个值的时候发送了两次请求,这有点逆天呀~!!反人类~!必须和谐一开始以为是重复绑定了,重新审核了代码 确定没有~ ...
- hibernate sql查询后对象转换成实体类
在多表查询的时候使用hibernate的sql查询的时候,一般返回的是object[]数组,或者可以使用 session.createSQLQuery(sql).setResultTransform ...
- 将单链表的每K个节点之间逆序
[说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“将单链表的每K个节点之间逆序”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说明, ...
- Scala学习之for 循环和 yield 的例子
for循环中的 yield 会把当前的元素记下来,保存在集合中,循环结束后将返回该集合.Scala中for循环是有返回值的.如果被循环的是Map,返回的就是Map,被循环的是List,返回的就是Lis ...
- JavaScript中的闭包理解
原创文章,转载请注明:JavaScript中的闭包理解 By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...