当前位置: 首页 > news >正文

凡科网站可以做seo优化网络游戏有哪些

凡科网站可以做seo优化,网络游戏有哪些,wordpress 微信登录插件下载,无限免费视频直播在进行 Linux 网络编程时#xff0c;经常会需要获取本机 IP 地址#xff0c;除了常规的读取配置文件外#xff0c;本文罗列几种个人所知的编程常用方法#xff0c;仅供参考#xff0c;如有错误请指出。 方法一#xff1a;使用 ioctl() 获取本地 IP 地址 Linux 下可以使用…  在进行 Linux 网络编程时经常会需要获取本机 IP 地址除了常规的读取配置文件外本文罗列几种个人所知的编程常用方法仅供参考如有错误请指出。 方法一使用 ioctl() 获取本地 IP 地址 Linux 下可以使用 ioctl() 函数以及结构体 struct ifreq 和结构体struct ifconf 来获取网络接口的各种信息。具体过程是先通过 ictol 获取本地所有接口的信息保存到 ifconf 结构中再从其中取出每个 ifreq 表示的接口信息。 如果本机的 IP 地址绑定在第一块网卡上则只需指定网卡名称无需获取所有网卡的信息即可获取见如下函数 int get_localip(const char * eth_name, char *local_ip_addr) {int ret -1;register int fd;struct ifreq ifr;if (local_ip_addr NULL || eth_name NULL){return ret;}if ((fdsocket(AF_INET, SOCK_DGRAM, 0)) 0){strcpy(ifr.ifr_name, eth_name);if (!(ioctl(fd, SIOCGIFADDR, ifr))){ret 0;strcpy(local_ip_addr, inet_ntoa(((struct sockaddr_in *)ifr.ifr_addr)-sin_addr));}}if (fd 0){close(fd);}return ret; }如果想通过获取所有网络接口信息示例代码如下 #include stdio.h #include net/if.h #include string.h #include unistd.h #include arpa/inet.h #include sys/ioctl.h #include netinet/in.hint get_localip(const char * eth_name, char *local_ip_addr) {int ret -1;register int fd, intrface;struct ifreq ifr[32];struct ifconf ifc;if (local_ip_addr NULL || eth_name NULL){return ret;}if ((fdsocket(AF_INET, SOCK_DGRAM, 0)) 0){ifc.ifc_len sizeof ifr;ifc.ifc_buf (caddr_t)ifr;if (!ioctl(fd, SIOCGIFCONF, (char*)ifc)) //获取所有接口信息{intrface ifc.ifc_len / sizeof(struct ifreq);while (intrface-- 0){//Get IP Addressif (!(ioctl(fd, SIOCGIFADDR, (char*)ifr[intrface]))){if(strcmp(eth_name, ifr[intrface].ifr_name) 0){ret 0;sprintf(local_ip_addr, %s, inet_ntoa(((struct sockaddr_in*)(ifr[intrface].ifr_addr))-sin_addr));break;}}}}}if (fd 0){close(fd);}return ret; }int main(int argc, const char **argv) {int ret;char local_ip[20] {0};ret get_localip(eth0, local_ip);if (ret 0){printf(local ip:%s\n, local_ip);}else{printf(get local ip failure\n);}return 0; }方法二getsockname() 获取本地 IP 地址 getsockname()用于获取一个已捆绑或已连接套接字的本地地址。若一个套接字与 INADDR_ANY 捆绑也就是说该套接字可以用任意主机的地址此时除非调用 connect() 或 accept() 来连接否则 getsockname() 将不会返回主机 IP 地址的任何信息。 示例代码 #include stdio.h #include errno.h #include string.h #include unistd.h #include arpa/inet.h #include sys/socket.h #include netinet/in.h#define PORT 80 #define SERVER_IP 192.168.10.31int main(int argc, const char **argv) {int ret -1;socklen_t len;char buf[30] {0};struct sockaddr_in server_addr, local_addr;int fd socket(AF_INET, SOCK_STREAM, 0);//int fd socket(AF_INET, SOCK_DGRAM, 0);if (fd 0){printf(fail to creat socket\n);return -1;}memset(server_addr, 0, sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(PORT);server_addr.sin_addr.s_addr inet_addr(SERVER_IP);if(connect(fd, (struct sockaddr*)server_addr, sizeof(server_addr))0){printf(connect error!!!\n);goto end;}len sizeof(local_addr);memset(local_addr, 0, sizeof(local_addr));ret getsockname(fd, (struct sockaddr*)local_addr, len);if (ret 0){printf(local ip is %s, local port is %d\n, inet_ntop(AF_INET, local_addr.sin_addr, buf, sizeof(buf)), ntohs(local_addr.sin_port));}else{printf(getsockname failed, error%d\n, errno);}end:if (fd){close(fd);}return ret; }方法三getaddrinfo() 获取本地 IP 地址 getaddrinfo() 可以完成网络主机中主机名和服务名到地址的映射但是一般不能用来获取本地 IP 地址当它用来获取本地 IP 地址时返回的一般是 127.0.0.1 本地回环地址且该函数仅仅支持 IPv4。 示例代码 #include netdb.h #include stdio.h #include unistd.h #include arpa/inet.h// 获取本地IP时一般都是127.0.0.1 int main(int argc, const char **argv) {int ret;char host_name[128] {0};struct addrinfo *res, *cur;struct sockaddr_in *addr;if (gethostname(host_name, sizeof(host_name)) 0){printf(gethostname error\n);return -1;}ret getaddrinfo(host_name, NULL, NULL, res);if (ret ! 0){printf(Error: error in getaddrinfo on hostname: %s\n, gai_strerror(ret));return -1;}for(cur res; cur ! NULL; cur cur-ai_next){if(cur-ai_family AF_INET){addr (struct sockaddr_in*)cur-ai_addr;printf(local ip:%s\n, inet_ntoa(addr-sin_addr));}//char host[1024] {0};//ret getnameinfo(cur-ai_addr, cur-ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST);//if(ret ! 0)//{// printf(getnameinfo: %s\n, gai_strerror(ret));//}//else//{// printf(ip: %s\n, host);//}}freeaddrinfo(res);return 0; }方法四gethostbyname() 获取本地 IP 地址 gethostbyname() 和 getaddrinfo() 的功能类似一般用于通过主机名或者服务名比如域名来获取主机的 IP 地址。但是要想获取本地 IP 地址的时候一般获取的是回环地址 127.0.0.1。 示例代码 #include netdb.h #include stdio.h #include unistd.h #include arpa/inet.h// 获取本地IP时一般都是127.0.0.1 int main(int argc, const char **argv) {int i 0;char host_name[128] {0};struct hostent *hptr;if (gethostname(host_name, sizeof(host_name)) 0){printf(gethostname error\n);return -1;}if ((hptrgethostbyname(host_name)) NULL){printf(gethostbyname error\n);return -1;}while(hptr-h_addr_list[i] ! NULL){printf(hostname: %s\n, hptr-h_name);printf( ip: %s\n, inet_ntoa(*(struct in_addr*)hptr-h_addr_list[i]));i;}return 0; }方法五通过 getifaddrs() 获取本地 IP 地址 代码来自StackOverflow:http://stackoverflow.com/questions/212528/linux-c-get-the-ip-address-of-local-computer 这里解释一下代码中的 INET_ADDRSTRLEN 和 INET6_ADDRSTRLEN 该宏变量是定义在 netinet/in.h 头文件中 // FILE: netinet/in.h#define INET_ADDRSTRLEN 16 /* for IPv4 dotted-decimal */#define INET6_ADDRSTRLEN 46 /* for IPv6 hex string */示例代码 #include stdio.h #include sys/types.h #include ifaddrs.h #include netinet/in.h #include string.h #include arpa/inet.hint main (int argc, const char * argv[]) {struct ifaddrs * ifAddrStructNULL;struct ifaddrs * ifaNULL;void * tmpAddrPtrNULL;getifaddrs(ifAddrStruct);for (ifa ifAddrStruct; ifa ! NULL; ifa ifa-ifa_next){if (!ifa-ifa_addr){continue;}if (ifa-ifa_addr-sa_family AF_INET) // check it is IP4{// is a valid IP4 AddresstmpAddrPtr((struct sockaddr_in *)ifa-ifa_addr)-sin_addr;char addressBuffer[INET_ADDRSTRLEN];inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);printf(%s IP Address %s\n, ifa-ifa_name, addressBuffer);}else if (ifa-ifa_addr-sa_family AF_INET6) // check it is IP6{// is a valid IP6 AddresstmpAddrPtr((struct sockaddr_in6 *)ifa-ifa_addr)-sin6_addr;char addressBuffer[INET6_ADDRSTRLEN];inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);printf(%s IP Address %s\n, ifa-ifa_name, addressBuffer);}}if (ifAddrStruct!NULL){freeifaddrs(ifAddrStruct);}return 0; }方法六通过 popen() 调用 ifconfig 获取本地 IP 地址 用popen() 建立一个管道管道的一端执行命令 ifconfig管道的另一端读取收到的数据并进行相应的解析。这种方法需要执行 shell 命令配合正则表达式效率较低一般不采用。而这种方式其实更倾向于配置原因就是使用简单。 示例代码 #include stdio.h #include stdlib.h#define ETH_NAME ens33int main(int argc, const char *argv[]) {FILE *fp;char buf[256] {0};char command[256] {0};//char *fmt ifconfig %s|sed -n 2p|sed -n s#^.*dr:##gp|sed -n s#B.*$##gp;char *fmt ifconfig %s|grep inet addr|awk { print $2} | awk -F: {print $2};snprintf(command, sizeof(command), fmt, ETH_NAME);if((fp popen(command, r)) NULL){perror(Fail to popen\n);return -1;}while(fgets(buf, sizeof(buf), fp) ! NULL){printf(%s, buf);}pclose(fp);return 0; }参考文章 [1] https://blog.csdn.net/bailyzheng/article/details/7489656 [2] https://blog.csdn.net/k346k346/article/details/48231933 [3] https://blog.csdn.net/zhongmushu/article/details/89944990
http://www.yutouwan.com/news/358695/

相关文章:

  • python和php哪个做网站营销型网站建设的特点表现
  • 免费的网站域名查询网站降权怎么恢复
  • 书城网站建设规划书有没有做软件的网站
  • 网络营销网站有哪些去菲律宾做网站
  • 网站建设后怎么写西安网站优化招聘网
  • cms网站内容管理系统网站制作公司杭州
  • 网站开发html5clh网站建设公司
  • 网站是否开启gzipwordpress ico不显示
  • 网站建设实例分析南宁网站建设服务商
  • 2023年7月最新新闻摘抄关键词seo
  • 多语言多风格网站方案推广优化seo
  • 科技成果展示网站建设方案国外 网站有做验证码吗
  • 安卓开发和网站开发中国企业排行榜
  • 网站做跳转对排名有影响吗网站的修改建设文字
  • 做二手回收哪个网站好昆明专业网站制作公司
  • 淮南哪里做网站曲靖做网站需要多少钱
  • 手机网站开发视频教程国内网站有哪些
  • 服装公司网站结构展示型建站模板平台
  • 建设银行佛山分行网站长春建设平台网站的公司哪家好
  • 网站建设哈尔滨网站优化4我想网站建设多少钱
  • 海淀团队组建网站seminar怎么读
  • 宿迁市住房和城乡建设局网站在阿里巴巴上做网站需要什么
  • 免费建站网站seowordpress自动写文章
  • 如何建立一个公网可以访问的网站加强医院微信和网站建设
  • 沭阳哪里有做网站推广的个人商城网站能备案吗
  • 手工做女宝宝衣服的网站字节跳动员工数量
  • 什么网站可以有人做详情页wordpress修改头部显示
  • 网站空间10g什么网站做电子元器件
  • 站长工具在线网络营销推广工具有哪些
  • 郑州网站建设制作石家庄企业网站开发