IOS用GCDAsynsocket框架进行socket

iOS 码拜 7年前 (2015-11-25) 698次浏览
用GCDAsynsocket第三方框架进行socket,连接和发送数据给服务端正常,服务端也返回数据了,但就是没法接收到数据
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag这个方法是代理方法,本人已经把
socket.delegate = self,并在ViewController ()加入了<GCDAsyncSocketDelegate>,可就是没法接收到数据,麻烦各高手们帮忙解答下,小弟非常感谢。
解决方案:10分
貌似这个和你的情况差不多
http://stackoverflow.com/questions/8368490/gcdasynsocketdelegate-didreaddata-method-is-not-called-using-gcdasynsocket
解决方案:10分
似乎有这样一个代理方法-(void)socket:(GCDAsyncSocket *)sock didConnectToHost…,这个主要就是你作为客户端连接服务器,连接成功后会进入这个委托,你在这个里面加一句[m_tcpSocket readDataWithTimeout:-1 tag:0];,本人这里的m_tcpSocket改成你本人的GCDAsyncSocket 对象。然后在-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag这个代理中,每次读完数据后再调用一次[m_tcpSocket readDataWithTimeout:-1 tag:0];就可以了。
意思就是你每调用一次[m_tcpSocket readDataWithTimeout:-1 tag:0];当有数据发来时你就能进入一次didReadData代理方法,所以当你连接成功时调用一次,以后每次进来读完数据再调用一次,当下次有数据来时,就又可以进来了,不知道本人说的够不够清楚

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明IOS用GCDAsynsocket框架进行socket
喜欢 (0)
[1034331897@qq.com]
分享 (0)