在我的应用程序中,我使用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的超时会自动重新发送数据包吗?或者其他任何方式吗?
提前致谢。
答案 0 :(得分:0)
我认为你对超时的理解是相反的。以下是作者文档的引用“如果超时值为负,则发送操作不会使用超时。”所以要做你计划的事,你需要使用正值。您可以实现在超时回调方法中重新发送逻辑:
- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;