socket服务器:允许重用本地地址

创建本地服务器的时候,有时候会遇到这样的错误 CFSocketSetAddress bind failure: 48.
这是因为本地地址没有设置为允许重用。使用以下代码可解决这个问题;

// 设置本地地址可重用:避免调试时重启app创建CFSocketSetAddress报错:48
    UInt32 reused = 1;
    int result = setsockopt(CFSocketGetNative(socket), SOL_SOCKET, SO_REUSEADDR, &reused, sizeof(reused));
    if (0 == result)
    {
        NSLog(@"[%@ %@]: Successfully allow local addreess reuse.", [self class], NSStringFromSelector(_cmd));
    } else
    {
        NSLog(@"[%@ %@]: Fail to allow loacl addreess reuse.", [self class], NSStringFromSelector(_cmd));
    }

注意: 如果把UInt32 reused = 1; 该成BOOL reused = YES;则会设置失败。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容