用GCDAsynsocket第三方框架进行socket,连接和发送数据给服务端正常,服务端也返回数据了,但就是没法接收到数据
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag这个方法是代理方法,本人已经把
socket.delegate = self,并在ViewController ()加入了<GCDAsyncSocketDelegate>,可就是没法接收到数据,麻烦各高手们帮忙解答下,小弟非常感谢。
-(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag这个方法是代理方法,本人已经把
socket.delegate = self,并在ViewController ()加入了<GCDAsyncSocketDelegate>,可就是没法接收到数据,麻烦各高手们帮忙解答下,小弟非常感谢。
解决方案:10分
解决方案: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代理方法,所以当你连接成功时调用一次,以后每次进来读完数据再调用一次,当下次有数据来时,就又可以进来了,不知道本人说的够不够清楚
意思就是你每调用一次[m_tcpSocket readDataWithTimeout:-1 tag:0];当有数据发来时你就能进入一次didReadData代理方法,所以当你连接成功时调用一次,以后每次进来读完数据再调用一次,当下次有数据来时,就又可以进来了,不知道本人说的够不够清楚