2014-03-01 50 views
1

我用下面的代码:GCDAsyncSocket不开放口

_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命令中得到一个错误,说“Address already is use”。

我发现迄今为止解决此问题的唯一方法是重新启动机器。从开发者角度来看,这是完全不切实际的。

我有这个工作得很好。任何想法可能会改变?

回答

0

您必须通过发送close消息来关闭套接字(或完全销毁它)。

+0

通过点击Xcode中的停止按钮来停止应用程序时,整蛊:-) – drekka