0

在我的应用程序中,我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 属性再次重新发送数据包......

GCDAsyncUdpSocketAPI 文档中它说

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

所以 -1 的超时将自动重新发送数据包?..或任何其他方式来做到这一点?

提前致谢。

4

1 回答 1

0

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

- (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
于 2013-08-20T21:41:42.633 回答