你好:
我现在使用cc3200的simplink的udp例程,代码中我使用的是sock的接口,我想实现通过getsockname来获取local ip,我不清楚sdk是否支持getsockname,如果不支持的话,可以通过其他方式实现吗?以下是我的代码:
int getLocal() {
struct sockaddr_storage random_addr;
memset(&random_addr, 0, sizeof(random_addr));
random_addr.ss_family = AF_INET;
struct sockaddr_in* v4_addr = (struct sockaddr_in*)&random_addr;
inet_pton(AF_INET, "8.8.8.8", &(v4_addr->sin_addr));
v4_addr->sin_port = 8888;
int localSkt = cc3200_socket(random_addr.ss_family, SOCK_DGRAM, IPPROTO_UDP);
if (localSkt < 0) return -1;
int nErr;
nErr = cc3200_connect(localSkt, (struct sockaddr *)&random_addr, sizeof(random_addr));
if (nErr < 0) return -2;
struct sockaddr_in localAddr;
memset(&localAddr, 0, sizeof(struct sockaddr_in));
socklen_t len = sizeof(struct sockaddr);
nErr = cc3200_getsockname(localSkt,(struct sockaddr*) &localAddr, &len);
if (nErr < 0) return -3;
FiPrint("get local ip:port = %s:%d\n", inet_ntoa(localAddr.sin_addr), ntohs(localAddr.sin_port));
}