GCDAsyncUdpSocket超时

时间:2013-08-20 12:53:49

标签: iphone ios udp timeout asyncsocket

在我的应用程序中,我使用GCDAsyncUdpSocket进行UDP数据包通信...

我编写了如下代码

GCDAsyncUdpSocket* UDPSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

 [UDPSocket sendData:dataForSendToServer toHost:stringForHostId port:portNumber withTimeout:5 tag:1];

如果数据包超时,我喜欢使用Timeout属性重新发送数据包......

GCDAsyncUdpSocket API文档中说

The timeout for the send opeartion. If the timeout value is negative, the send operation will not use a timeout."

那么带有-1的超时会自动重新发送数据包吗?或者其他任何方式吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为你对超时的理解是相反的。以下是作者文档的引用“如果超时值为负,则发送操作不会使用超时。”所以要做你计划的事,你需要使用正值。您可以实现在超时回调方法中重新发送逻辑:

- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;