我们创建了一个 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);
谢谢你的帮助。