我使用了以下代码:
_broadcastReceiveSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:_broadcastHandler delegateQueue:_broadcastQueue];
BOOL successfulStart = [_broadcastReceiveSocket bindToPort:BROADCAST_PORT error:error]
&& [_broadcastReceiveSocket joinMulticastGroup:BROADCAST_HOST error:error]
&& [_broadcastReceiveSocket beginReceiving:error];若要启动侦听UDP广播的套接字,请执行以下操作。
但我似乎只能在模拟器中运行这段代码一次。在那之后,我从bindToPort命令中得到了一个错误信息,说“地址已经被使用了”。
到目前为止,我找到的解决这个问题的唯一方法是重新启动机器。从开发人员的角度来看,这是完全不切实际的。
我已经让它工作得很好了。有什么想法可以改变吗?
发布于 2014-03-02 02:13:22
您必须通过向套接字发送close消息来关闭套接字(或者完全销毁它)。
https://stackoverflow.com/questions/22115769
复制相似问题