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会跑,并且读到的指令就是上一条服务器主动发过来的指令。
一年多之前 回复
hengcheng1019
hengcheng1019   2016.05.11 16:55

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

hengcheng1019
hengcheng1019 回复oyljerry: 我的想法是,一有服务端发过来数据就调用下readDataWithTimeout,但是readDataWithTimeout这个方法不知写在什么地方。。。
一年多之前 回复
hengcheng1019
hengcheng1019 回复oyljerry: 服务端发送的数据成功了,但是必须手动调用 readDataWithTimeout 这个方法,代理方法didReadData才会跑,这样才会读到服务端发送过来的数据。
一年多之前 回复
oyljerry
oyljerry 回复hengcheng1019: 那你可以看看客户端跟服务端建立好连接后 服务端主动发送数据有没有发送出去成功 客户端有没有收到数据 两边调试跟踪一下
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!