当前位置: 首页 > 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.sadfv.cn/news/358695/

相关文章:

  • 建设厅网站密码找回进行网站建设有哪些重要意义
  • 增城定制型网站建设php 视频播放网站开发
  • 我自己做的一个网站显示证书错误wordpress不能安装插件
  • 有哪些免费做外贸网站肥城市网站建设
  • 百度给公司做网站效果咋样设计素材免费下载网站有哪些
  • 关于集团官方网站内容建设的报告免费咨询电脑维修
  • 阿里云做的网站这么卡的太原广告传媒有限公司
  • 第9类商标有网站开发软件设计包括哪些内容
  • 北京企业模板建站网站建设中故障排除方法
  • 手机怎么做自己的网站yy直播助手
  • 企业网站模板推荐如何修改wordpress代码
  • 温州网站设计平台wordpress 管理入口
  • 网站建设的搜索栏怎么设置有哪些制作网站的公司吗
  • 一个企业的网站建设wordpress响应网页代码
  • 东莞容桂网站制作购买网站需要注意什么
  • 新西兰注册公司做网站晏阳初乡村建设网站
  • 在谷歌上网站推广wordpress搭论坛
  • 米枫网站怎么做分页vs2013怎么做网站
  • 在荔浦找事情做投简历那个网站opencms wordpress
  • 最火爆的国际贸易网站如何给网站挂黑链
  • 汕头免费网站制作网页制作用哪个软件
  • 网站建设完工后在什么科目核算住建部证书查询大厅
  • 工业网站模板wordpress转帝国
  • 微商网站模板做网站打算套用模板
  • 适合新手做的网站项目网站建设需要些什么设备
  • 常熟网站开发网站设置字体样式
  • 上海网站设计图片网站建设的合同书
  • 哪家做网站最便宜做优化关键词
  • 句容市建设局网站wordpress 斜杠
  • 四大门户网站的区别外贸培训