2 hengcheng1019 hengcheng1019 于 2016.05.11 16:07 提问

使用 GCDAsyncSocket 怎么接收服务器主动发过来的消息

小弟刚学GCDAsyncSocket,有些地方还不太明白,还请大神指教,谢谢!

就是在使用过程中,客户端发指令给服务器,服务器会返回指令,这个返回的指令客户端这边可以收到,也就是didReadData这个代理方法会运行。

但是如果客户端什么也不做,服务器主动发过来的指令,客户端就收不到了,didReadData这个方法也不会跑。

请问下,如果服务器主动发消息过来,哪个代理方法会跑,要怎么写?

2个回答

oyljerry
oyljerry   Ds   Rxr 2016.05.11 16:37

你客户端有没有主动跟服务端建立连接,服务端发送数据的时候,是发送给哪个socket,是不是发给对应的客户端了。只要有数据应该都是触发didReadData

hengcheng1019
hengcheng1019 建立了连接,一直保持的长连接。服务器是发给这个客户端没错的,因为收不到服务器主动发过来的指令后,客户端再发一条指令过去,didReadData会跑,并且读到的指令就是上一条服务器主动发过来的指令。
大约 2 年之前 回复
hengcheng1019
hengcheng1019   2016.05.11 16:55

我现在的要求是,服务器一有指令过来,客户端要有反应,并且处理掉。而不是要等客户端再发一条指令过去,才会读到上一条服务器主动发过来的指令。

hengcheng1019
hengcheng1019 回复oyljerry: 我的想法是,一有服务端发过来数据就调用下readDataWithTimeout,但是readDataWithTimeout这个方法不知写在什么地方。。。
大约 2 年之前 回复
hengcheng1019
hengcheng1019 回复oyljerry: 服务端发送的数据成功了,但是必须手动调用 readDataWithTimeout 这个方法,代理方法didReadData才会跑,这样才会读到服务端发送过来的数据。
大约 2 年之前 回复
oyljerry
oyljerry 回复hengcheng1019: 那你可以看看客户端跟服务端建立好连接后 服务端主动发送数据有没有发送出去成功 客户端有没有收到数据 两边调试跟踪一下
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
GCDAsyncSocket 客户端连接成功后即主动断链
昨晚一切正常,今早发现这个世界变了…… GCDAsyncSocket建立的客户端主动连接上服务器后,立即断连,然后重连,然后继续断连…… 经跟踪发现,是由于连接成功后,GCDAsyncSocket的回调函数CFReadStreamCallback和CFWriteStreamCallback分别收到了kCFStreamEventErrorOccurred消息,错误原因为:The oper
GCDAsyncSocket 接收不到数据
GCDAsyncSocket 接收不到数据
Swift开发:GCDAsyncSocket通信之TCP服务器
1 功能需求:       1 在Swift下使用GCDAsyncSocket实现简单的信息收发功能    2 Mac下为tcp服务器,windows下为tcp客户端  2 效果图: 3 swift代码: import UIKit class ViewController: UIViewController, GCDAsyncSocketDelegate {
GCDAsyncSocket接收数据连包无法解析的问题
最近在使用GCDAsyncSocket进行socket通信的工作,总是莫名的
用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息
文章来源:http://blog.csdn.net/cdy2143/article/details/8963422 在项目中,一直都是用AsyncSocket的开源项目来做IOS的Socket的开发,现在遇到一个问题:当数据包比较频繁的发送到手机时,即使使用了readDataToData,还是会出现丢包的问题且读到的包中还会出现分割符。后面终于参考了其他的文章,看到GCDAsyncSoc
GCDAsyncSocket TCP Server iOS例子
一个GCDAsyncSocket 编写的TCP Echo 服务器,在ipad,iPhone测试通过
iOS学习笔记4-GCDAsyncUdpSocket的使用(实现异步发送接收数据)
做项目的时候用到了GCDAsyncUdpSocket开源库,所以在此总结下它的用法,作为笔记;GCDAsyncUdpSocket简介GCDAsyncUdpSocket开源类库是以苹果的GCD多任务处理机制完成的一个异步交互套接字通讯。如果需要使用同步的,则去寻找AsyncUdpSocket就可以了。该开源库完成了UDP之间的通信,使得UDP通信的编程变得更加简单;
基于springboot+mybatis的微信公众号开发第三篇-消息的接收与回复
1、在写处理消息的方法前,我们得把相关的model类写好。 在model包下创建message(req与resp),具体创建如图所示: BaseMessage类/** * 消息基类(普通用户 -> 公众帐号) * */ public class BaseMessage { // 开发者微信号 private String ToUserName; // 发送方帐号(一
iOS scoket 再探。换成了GCDAsyncSocket,并且实现了双方聊天
学习iOS也有一段时间了。也在试着用iOS来写项目,感谢各路大神的帮助,就不一一@了。本文只是记载本人的学习过程。                                                                            ---------------------学如逆水行舟不进则退。 1.这次换成了GCDAsyncSocket
iOS的GCDAsyncSocket快速开发Socket通信
iOS 基于GCDAsyncSocket快速开发Socket通信 2016年1月17日 GCDAsyncSocket是CocoaAsyncSocket第三方库中的其中一个类,本文介绍的就是基于这一个类来做快速的socket通信开发,而且该库已经支持IPv4和IPv6 我们对GCDAsyncSocket做了一层封装调用,它包含了建连、断开、重连、心跳、自定义请求 首先,介绍一下Coc