gpt4 book ai didi

android ndk 套接字网络无法访问

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:35 28 4
gpt4 key购买 nike

我不知道这是我处理 Android 的方式,还是我的 native 代码有问题,或两者兼而有之。

我正在用 C++ 设置一个 udp 套接字(由 swig 生成的包装器):

udpSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (udpSocket < 0)
{
pthread_mutex_unlock(&csOpenCloseUdp);
throw IOException("Failed to open socket");
}


char bAllowMultiple = true;
setsockopt(udpSocket, SOL_SOCKET, SO_REUSEADDR, &bAllowMultiple, sizeof(bAllowMultiple));
setsockopt(udpSocket, IPPROTO_IP, IP_MULTICAST_TTL, (char *)&hopLimit, sizeof(hopLimit));
setsockopt(udpSocket, IPPROTO_IP, IP_MULTICAST_IF, (char *)&localAddr, sizeof(localAddr));

// Set to non-blocking mode
unsigned long bMode = 1;
ioctl( udpSocket, FIONBIO, &bMode );

// Create the local endpoint
sockaddr_in localEndPoint;
localEndPoint.sin_family = AF_INET;
localEndPoint.sin_addr.s_addr = localAddr.s_addr;
localEndPoint.sin_port = groupEndPoint.sin_port;

// Bind the socket to the port
int r = bind(udpSocket, (sockaddr*)&localEndPoint, sizeof(localEndPoint));
if (r == SOCKET_ERROR)
{
//LeaveCriticalSection(&csOpenCloseUdp);
pthread_mutex_unlock(&csOpenCloseUdp);
close();
throw IOException("Failed to bind port");
}


// Join the multicast group
struct ip_mreq imr;
imr.imr_multiaddr = groupEndPoint.sin_addr;
imr.imr_interface.s_addr = localAddr.s_addr;
setsockopt(udpSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&imr, sizeof(imr));

套接字没有抛出任何异常,在此之后它有一些值而不是 INVALID_SOCKET。

当我尝试发送数据包时,

int r = sendto(udpSocket, (char*)dataToSend, (size_t)length, 0, (sockaddr*)&groupEndPoint, (socklen_t)sizeof(groupEndPoint));

我收到错误号 101:网络无法访问。

我是套接字编程的新手,我知道 Android 中的套接字是一个糟糕的开始方式,但事实是我必须完成这项工作而且时间很少。这里有人知道网络无法访问的可能原因吗?有没有人试过在 Android 上玩 UDP 并且可以说明一些问题?

最佳答案

是否有使用 C++ 套接字的要求?如果可能的话,为了节省时间,而且差不多为了一切的利益,我建议改用 Java API。以下是如何使用它的示例:http://android-er.blogspot.com/2011/01/simple-communication-using.html .我喜欢 C,但我不建议在这里使用它。

关于android ndk 套接字网络无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408980/

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