我们创建了一个iOS应用程序,它在一个线程中执行UDP发送操作(向服务器发送请求)(我们使用bsd套接字API),另一个线程在同一个套接字上执行UDP接收操作(从服务器接收响应)。
它可以在iOS 4/5上正常运行,但是当我们在iOS 6.0.1(iPhone)上测试它时它不起作用,在iOS 6.0和模拟器的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);
感谢您的帮助。
答案 0 :(得分:0)
发现了Bug!我们没有收到来自Cellular的UDP数据包,但是TCP是可以通过的,所以recvfrom无限地阻塞。