我在linux(ubuntu 12.04 linux kernel 3.12.17)中编写了下面的代码,并且比较成功,但是当我在eclipse中将代码移动到android中,并与ndk进行比较时,它显示错误:当指定types为' struct int in_addr'从types'int'。
addrs = inet_makeaddr(inet_netof(sin->sin_addr),INADDR_ANY);
整个代码是:
#include <jni.h> #include <linux/if.h> #include <linux/in.h> #include <linux/sockios.h> #include <stdint.h> #include <sys/endian.h> static struct in_addr *getbroadcastaddr(char *inter,int sock,char *buf){ struct ifconf ifc; struct ifreq ifreq,*ifr; static struct in_addr addrs; struct sockaddr_in *sin; bzero(&addrs,sizeof(addrs)); ifc.ifc_len = UDPMSGSIZE; ifc.ifc_buf = buf; if (ioctl(sock,SIocgIFCONF,(char *)&ifc) < 0) { perror("broadcast: ioctl (get interface configuration)"); return(&addrs); } ifr = ifc.ifc_req; for (ifr=ifc.ifc_req;ifr->ifr_name[0];ifr++) { if (strcmp(ifr->ifr_name,inter)) continue; ifreq = *ifr; if (ioctl(sock,SIocgIFFLAGS,(char *)&ifreq) < 0) { perror("broadcast: ioctl (get interface flags)"); continue; } if ((ifreq.ifr_flags & IFF_broADCAST) && (ifreq.ifr_flags & IFF_UP) && (ifr->ifr_addr.sa_family == AF_INET)) { sin = (struct sockaddr_in *)&ifr->ifr_addr; if (ioctl(sock,SIocgIFBRDADDR,(char *)&ifreq) < 0) { addrs = inet_makeaddr(inet_netof(sin->sin_addr),INADDR_ANY); } else { addrs = ((struct sockaddr_in *) (&ifreq.ifr_broadaddr))->sin_addr; } printf("Interface : %sn",ifr->ifr_name); return(&addrs); } } return(NULL); }
为什么? android-ndk中的函数“inet_makeaddr”在枪中是不同的吗?
DNS查询function,区分不存在的主机和networking错误
当我在Macterminal上键入`route -n`时,为什么不显示路由表?
创build一个Linux数据包分解器
在接受连接之前或之后分叉?
HAProxydynamic服务器地址
使用以太网电缆连接两台计算机
echo 2> / proc / sys / net / ipv4 / tcp_mtu_probing能够解决我的问题,但为什么? 这个命令做了什么?
绕过Linux集群网关 – 直接从您的桌面节点
需要删除与iptablesbuild立的连接
错误信息是误导性的,NDK的早期版本只是简单地丢失了这个函数。 编译器产生不兼容的类型错误,因为当函数未定义时,它假定返回类型是int 。
相关文件是(NDK文件夹) /platforms/android-xx/arch-yyy/usr/include/arpa/inet.h
您可以通过更新到最新版本的NDK来解决您的问题。 inet_makeaddr在android-21 inet_makeaddr是在inet.h定义的
如果你仍然收到编译错误,然后尝试
#include <arpa/inet.h>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。