cocoa asyncsocket 使用中遇到的问题

cocoa asyncsocket 使用中遇到的问题,第1张

概述AsyncSocket连接服务器的问题 用AsyncSocket连接服务器时,不管服务器有没有开,[client connectToHost:hostIP onPort:hostPort error:&err]这一句一直返回YES,这是为什么? 所以我都是在- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host

AsyncSocket连接服务器的问题
用AsyncSocket连接服务器时,不管服务器有没有开,[clIEnt connectToHost:hostIP onPort:hostPort error:&err]这一句一直返回YES,这是为什么?


所以我都是在- (voID)onSocket:(AsyncSocket *)sock dIDConnectToHost:(Nsstring *)host port:(UInt16)port

这个里面来判断服务器是否连接成功,成功后才发请求



用asynsocket的过程中,遇到这样一个情况,我发消息,SERVER是可以收到的。但是SERVER收到后,会默认返回个消息给我,我总是收不到,无法在这个函数里收到消息。

- (voID)onSocket:(AsyncSocket *)sock dIDReadData:(NSData *)data withTag:(long)tag


// 添加事件响应函数
A:- (voID)onSocket:(AsyncSocket *)sock dIDConnectToHost:(Nsstring *)host port:(UInt16)port;
B:- (voID)onSocketDIDSecure:(AsyncSocket *)sock;
C:- (voID)onSocket:(AsyncSocket *)sock willdisconnectWithError:(NSError *)err;
D:- (voID)onSocketDIDdisconnect:(AsyncSocket *)sock;
E:- (voID)onSocket:(AsyncSocket *)sock dIDReadData:(NSData *)data withTag:(long)tag;

// 在函数A中请求读取数据,AsyncSocket内部会在有接收到数据的时候调用函数E
[_clIEnt readDataWithTimeout:-1 tag:0];

// 函数E被调用过之后这个读取请求就结束了,我们不想让它结束掉,所以在函数E结尾处加入,这样读取过程就可以一直持继下去了
[_clIEnt readDataWithTimeout:-1 tag:0];

 

这个库若想监听网络,必须先设置[socket readDataWithTimeout:-1 tag:0];这里面的tag很重要。如果你写的时候用的tag与读的不相同,那么永远在回调的地方没有回复。 当读的时候,需要判断长度是否足够,如果不够需要再次设置[socket readDataWithTimeout:-1 tag:0]; 如果你需要保持这条链路,就不要用它的超时,因为默认超时,会断开连接。你再超时回调处,再次设置时间,也只是延长等待时间,到点仍是断链。

总结

以上是内存溢出为你收集整理的cocoa asyncsocket 使用中遇到的问题全部内容,希望文章能够帮你解决cocoa asyncsocket 使用中遇到的问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061917.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存