我正在寫一個連續發送和接收數據的應用程序。我的初始發送/接收正在成功運行,但是當我預計recvfrom中的數據大小爲512字節時,我的返回值爲-1,即「資源暫時不可用」。並將errno設置爲EAGAIN。如果我使用阻塞呼叫,即沒有超時,則應用程序只會掛在recvfrom中。 iPhone上的recvfrom有沒有最大限制?以下是從服務器接收數據的功能。我無法弄清楚會出現什麼問題。iPhone無法使用UDP接收數據recvfrom
{ struct timeval tv;
tv.tv_sec = 3;
tv.tv_usec = 100000;
setsockopt (mSock, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof tv);
NSLog(@"Receiving.. sock:%d",mSock);
recvBuff = (unsigned char *)malloc(1024);
if(recvBuff == NULL)
NSLog(@"Cannot allocate memory to recvBuff");
fromlen = sizeof(struct sockaddr_in);
n = recvfrom(mSock,recvBuff,1024,0,(struct sockaddr *)&from, &fromlen);
if (n == -1) {
[self error:@"Recv From"];
return;
}
else
{
NSLog(@"Recv Addr: %s Recv Port: %d",inet_ntoa(from.sin_addr), ntohs(from.sin_port));
strIPAddr = [[NSString alloc] initWithFormat:@"%s",inet_ntoa(from.sin_addr)];
portNumber = ntohs(from.sin_port);
lIPAddr = [KDefine StrIpToLong:strIPAddr];
write(1,recvBuff,n);
bcopy(recvBuff, data, n);
actualRecvBytes = n;
free(recvBuff);
}
}
我想知道是否有任何創建IO線程的最大限制或可能是網絡接口已滿? – Neo 2009-04-20 11:40:52