首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定无效的CFSocket

如何确定无效的CFSocket
EN

Stack Overflow用户
提问于 2009-05-21 13:46:58
回答 1查看 1.5K关注 0票数 4

如何避免通过CFSocketSendData向无效套接字发送数据?我尝试使用CFSockerIsValid来确定套接字状态,但当另一端关闭时,此方法仍返回true。

如何确定套接字是否有效?这样才能避免错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-13 05:18:01

如果另一端关闭套接字,您的回调(您在CFSocketCreate中指定的)将使用回调类型kCFSocketDataCallBack调用,但数据将为空。对它进行如下测试:

代码语言:javascript
复制
void SocketCallback (CFSocketRef s, CFSocketCallBackType callbackType,
                 CFDataRef address, const void *data, void *info)
{
    if (callbackType == kCFSocketDataCallBack) {
        NSData *nsData = (NSData *)data;
        if (nsData.length == 0) {
            NSLog(@"got kCFSocketDataCallBack, but with 0 bytes -- connection terminated");
            // do whatever you want to do here when connection is dropped
        }
    } else {
        NSLog(@"SocketCallback type %d", callbackType);
    }

}

您可以在那里设置一个标志,并使用它来知道您的连接已断开,然后当您要写入断开的连接时,尝试重新连接或通知用户或执行您想要执行的任何操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/893013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档