gpt4 book ai didi

iPhone 无法使用 UDP recvfrom 接收数据

转载 作者:行者123 更新时间:2023-12-03 17:45:50 25 4
gpt4 key购买 nike

我正在编写一个连续发送和接收数据的应用程序。我的初始发送/接收运行成功,但是当我期望接收中的数据大小为 512 字节时,我得到的返回值为 -1,即“资源暂时不可用”。并且 errno 设置为 EAGAIN。如果我使用阻塞调用,即没有超时,应用程序只会卡在recvfrom中。 iPhone 上的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);
}

}

最佳答案

阅读the manpage :

If no messages are available at the socket, the receive call waits for a message to arrive, unless the socket is nonblocking (see fcntl(2)) in which case the value -1 is returned and the external variable errno set to EAGAIN.

关于iPhone 无法使用 UDP recvfrom 接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com