2

我们创建了一个 iOS 应用程序,它在一个线程(我们使用 bsd 套接字 API)中执行 UDP 发送操作(向服务器发送请求),另一个线程在同一个套接字上执行 UDP 接收操作(从服务器接收响应)。

它在 iOS 4/5 上正常工作,但是当我们在 iOS 6.0.1 (iPhone) 上测试它时它不起作用,在装有 iOS 6.0.1 和模拟器的 iPad 上没有发现问题。

该应用程序无限阻塞recvfrom,我们确定服务器有 UDP 响应。似乎与此问题相同:https ://groups.google.com/forum/#!msg/cocoaasyncsocket/rWokj2VO3VE/f-mZ6xWEUhkJ 。

代码片段:

char recvData[UDP_PACKAGE_LENGTH];
bzero(recvData, UDP_PACKAGE_LENGTH);
struct sockaddr_in fromAddr;
uint32_t len = sizeof(fromAddr);
int isHead = recvfrom(self->serverSock, recvData, UDP_PACKAGE_LENGTH, 0, (struct sockaddr*)(&fromAddr), &len);

谢谢你的帮助。

4

1 回答 1

0

错误被发现!我们没有收到来自 Cellular 的 UDP 数据包,但 TCP 是可以通过的,因此 recvfrom 无限阻塞。

于 2012-11-21T11:58:06.600 回答