我想創建一個套接字並將其綁定到接口IP地址,以便數據包僅在本機層的Android上通過該接口。但在bind()系統調用中,我得到一個不支持的地址族。不過,我認爲我已將地址家庭作爲AF_INET。Android系統不支持地址系列錯誤
local = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in *));
memset(local,'\0',sizeof(sockaddr_in));
local->sin_family = AF_INET;
optval2 = "wlan0";
memset(&ifr, 0, sizeof(struct ifreq));
snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), optval2);
if(ioctl(sock, SIOCGIFADDR, &ifr) == 0) {
__android_log_print(3, DEBUG_TAG, "ioctl success");
}
ip = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr);
local->sin_addr.s_addr = inet_addr(ip);
local->sin_port = 0;
if(bind(sock, (struct sockaddr*)&local, sizeof(struct sockaddr_in)) < 0) {
__android_log_print(3, DEBUG_TAG, "error %d string %s", errno, strerror(errno));
}
任何幫助將不勝感激。
可以發佈logcat嗎? – Anukool 2013-03-28 11:23:53
03-28 17:24:42.782:D/our_activity(5613):ioctl success 03-28 17:24:42.782:D/our_activity(5613):local ip addr 219.64.74.5 03-28 17:24: 42.782:D/our_activity(5613):錯誤97字符串地址系列不支持的協議 03-28 17:24:42.782:D/our_activity(5613):需要IP主機www.google.com 03-28 17:24 :43.157:D/our_activity(5613):IP是173.194.38.146 – 2013-03-28 11:58:04