sockets - ios6.0.1 recvfrom始终在iPhone上阻止

标签 sockets ios6 udp

我们创建了一个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);

谢谢你的帮助。

最佳答案

发现错误!我们没有从Cellular接收UDP数据包,但是TCP是可传递的,因此recvfrom无限地阻塞。

关于sockets - ios6.0.1 recvfrom始终在iPhone上阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475285/

相关文章:

c# - moq 模拟 buffer[] 参数

linux - 丢失的 TCP 数据包在哪里?

ios - 使 UICollectionView 可缩放?

Python socket.recv 异常

c - telnet 消息结束

ios - 将自定义按钮添加到 UINavigationController 子类中

iphone - 在类的 dealloc 方法中释放之前,我们可以检查对象是否为 nil

c++ - 无法使 getnameinfo 处理我的 UDP 代码

java - 局域网内的外部主机无响应

c - UDP recvfrom 调用返回错误的端口号。为什么?