スレッド (bsd ソケット API を使用) で UDP 送信操作 (サーバーへの要求の送信) を実行する iOS アプリを作成し、別のスレッドが同じソケットで 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);
助けてくれてありがとう。