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

空调网站模板新网站怎么做推广

空调网站模板,新网站怎么做推广,wordpress 作者 链接,郑州网站推广策【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com…

【图书推荐】《Linux C与C++一线开发实践(第2版)》_linux c与c++一线开发实践pdf-CSDN博客
《Linux C与C++一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com)

LinuxC\C++编程技术_夏天又到了的博客-CSDN博客

13.4.11  获得套接字地址

一个套接字绑定了地址,就可以通过函数来获取它的套接字地址了。套接字通信需要本地和远程两端建立套接字,这样获取套接字地址可以分为获取本地套接字地址和获取远程套接字地址。其中,获取本地套接字地址的函数是getsockname,这个函数在下面两种情况下可以获得本地套接字地址。

(1)本地套接字通过bind函数绑定了地址。

(2)本地套接字没有绑定地址,但通过connect函数和远程建立了连接,此时内核会分配一个地址给本地套接字。

getsockname函数声明如下:

#include <sys/socket.h>
int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

其中,参数sockfd是套接字描述符;addr指向存放套接字地址的结构体指针;addrlen是结构体sockaddr的大小。

【例13.2】绑定后获取本地套接字地址

(1)打开Visual Studio Code,新建文本文件,输入代码如下:

#include <stdlib.h>
#include <sys/types.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include "unistd.h"
#include "errno.h"
#include <arpa/inet.h> // for inet_ntoaint main()
{int sfp, nfp;struct sockaddr_in s_add, c_add;socklen_t sin_size;unsigned short portnum = 10051;struct sockaddr_in serv; socklen_t serv_len = sizeof(serv); sfp = socket(AF_INET, SOCK_STREAM, 0);if (-1 == sfp){printf("socket fail ! \r\n");return -1;}printf("socket ok !\r\n");printf("ip=%s,port=%d\r\n", inet_ntoa(serv.sin_addr), ntohs(serv.sin_port)); // 马上获取	int on = 1;setsockopt(sfp, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));// 允许地址的立即重用bzero(&s_add, sizeof(struct sockaddr_in));s_add.sin_family = AF_INET;s_add.sin_addr.s_addr =   inet_addr("192.168.0.2"); // 这个IP地址必须是本机上有的s_add.sin_port = htons(portnum);// 绑定if (-1 == bind(sfp, (struct sockaddr *)(&s_add), sizeof(struct sockaddr)))  {printf("bind fail:%d!\r\n", errno);return -1;}printf("bind ok !\r\n");getsockname(sfp, (struct sockaddr *)&serv,&serv_len);// 获取本地套接字地址// 打印套接字地址里的IP地址和端口号printf("ip=%s,port=%d\r\n", inet_ntoa(serv.sin_addr), ntohs(serv.sin_port));	
return 0;
}

在代码中,我们首先创建套接字,马上获取它的地址信息,然后绑定IP地址和端口号,再去获取套接字地址。运行时可以看到没有绑定前获取到的都是0,绑定后就可以正确获取到了。

(2)保存代码为test.cpp,上传到Linux,编译并运行:

# cd /zww/test
# g++ test.cpp -o test
# ./test
socket ok !
ip=0.0.0.0,port=0
bind ok !
ip=192.168.0.2,port=10051

需要注意的是,192.168.0.2必须是本机上存在的IP地址,如果随便设一个并不存在的IP地址,程序就会返回错误。设置一个并不存在的IP地址后编译运行,应该会出现下面的结果:

# g++ test.cpp -o test
# ./test
socket ok !
ip=0.0.0.0,port=0
bind fail:99!

要获取远程套接字地址,可以使用getpeername函数。getpeername只有在连接建立以后才被调用,否则不能正确获得对方的地址和端口,因此它的参数描述字一般是已连接描述字而非监听套接口描述字。getpeername函数声明如下:

#include <sys/socket.h>
int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

其中,参数sockfd是已连接的套接字描述符;addr指向存放套接字地址的结构体指针;addrlen是结构体sockaddr的大小。

13.4.12  获得主机名称和主机信息

gethostname函数是Linux中的一个系统调用,用于获取当前主机的名称。函数声明如下:

#include <unistd.h>
int gethostname(char *name, size_t len);

其中,name用于存储获取到的主机名,len是主机名的更大长度。下面看一个实例,返回本地主机的标准名称。

【例13.3】绑定后获取本地套接字地址

(1)打开Visual Studio Code,新建文本文件,输入代码如下:

#include <stdio.h>
#include <unistd.h>int main()
{char hostname[30]="";int flag = 0;flag = gethostname(hostname, sizeof(hostname));if (flag < 0){perror("gethostname error");return -1 ;}printf("hostname = %s\n", hostname);return 0 ;
}

(2)保存代码为test.cpp,上传到Linux,编译并运行:

# gcc test.cpp -o test
# ./test
hostname = mypc

为了验证是否正确,我们可以用命令uname -n来测试一下,该命令用于显示主机名:

# uname -n
mypc

可见结果正确。

在网络编程中,可能出现这样的情况:我们只知道某个服务器的主机名或域名,但不知道其具体的IP地址是什么。例如,知道百度的网址是www.baidu.com,但不知道其IP地址具体是什么。而gethostbyname可以让我们知道某个网址对应的IP地址。gethostbyname函数是Linux系统中用于获取主机名对应IP地址的函数之一,它通过主机名或域名获取网络信息,包括IP地址。该函数声明如下:

#include <netinet/in.h>

struct hostent *gethostbyname(const char *name);

参数name表示域名或主机名。若函数执行成功,则返回hostent指针,否则返回NULL,失败原因存于h_error中(注意错误原因不存于error中)。

hostent结构具体定义如下:

struct hostent {char *h_name;         /*正式的主机名称*/char **h_aliases;     /*该主机的其他别名*/int h_addrtype;       /*地址类型,通常是AF_INET*/int h_length;         /*地址的长度*/char **h_addr_list;   /*该主机的所有地址*/
};

该函数首先在/etc/hosts文件中查找是否有匹配的主机名,如果没有,则到域名解析配置文件中去查找。下面我们看一个实例,通过网站域名得到网站主机的名称和IP地址。

【例13.4】获取腾讯服务器的主机名和IP地址

(1)打开Visual Studio Code,新建文本文件,输入代码如下:

#include <stdio.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main(int argc, char *argv [])
{struct hostent *h;const char *s = "www.qq.com";  // 定义域名字符串if ((h = gethostbyname(s)) == NULL) {  /* get the host info */herror("gethostbyname");return -1;}printf("Host name  : %s\n", h->h_name); // 输出主机名称//输出IP地址printf("IP Address : %s\n", inet_ntoa(*((struct in_addr *)h->h_addr)));return 0;
}

在上述代码中,我们首先定义网站域名字符串,然后通过gethostbyname函数得到网站主机的信息,最后输出主机的名称和IP地址。其中,函数inet_ntoa的功能是将IP地址转换成用“.”间隔的字符串形式。

(2)保存代码为test.cpp,上传到Linux,编译并运行:

# gcc test.cpp -o test
# ./test
Host name  : ins-r23tsuuf.ias.tencent-cloud.net
IP Address : 101.91.22.57


文章转载自:
http://propyne.bwmq.cn
http://gelose.bwmq.cn
http://epurate.bwmq.cn
http://jainism.bwmq.cn
http://multiuser.bwmq.cn
http://waur.bwmq.cn
http://geonavigation.bwmq.cn
http://napier.bwmq.cn
http://piefort.bwmq.cn
http://anthropogeny.bwmq.cn
http://issuer.bwmq.cn
http://weedicide.bwmq.cn
http://tory.bwmq.cn
http://shamo.bwmq.cn
http://epigraph.bwmq.cn
http://plasmid.bwmq.cn
http://grandsire.bwmq.cn
http://lovebird.bwmq.cn
http://lovage.bwmq.cn
http://coloration.bwmq.cn
http://adventive.bwmq.cn
http://lacedaemonian.bwmq.cn
http://vesicle.bwmq.cn
http://agrypnotic.bwmq.cn
http://needler.bwmq.cn
http://fian.bwmq.cn
http://arlene.bwmq.cn
http://fixing.bwmq.cn
http://sega.bwmq.cn
http://debug.bwmq.cn
http://polyphagous.bwmq.cn
http://contort.bwmq.cn
http://lickspit.bwmq.cn
http://clericature.bwmq.cn
http://alcheringa.bwmq.cn
http://defibrillate.bwmq.cn
http://comitiva.bwmq.cn
http://unstudied.bwmq.cn
http://paleontology.bwmq.cn
http://periwig.bwmq.cn
http://guardee.bwmq.cn
http://shortness.bwmq.cn
http://mastodont.bwmq.cn
http://nazism.bwmq.cn
http://acidoid.bwmq.cn
http://sinuiju.bwmq.cn
http://walhalla.bwmq.cn
http://intertriglyph.bwmq.cn
http://underlooker.bwmq.cn
http://squad.bwmq.cn
http://bandoeng.bwmq.cn
http://commendable.bwmq.cn
http://kymograph.bwmq.cn
http://bouillabaisse.bwmq.cn
http://unarmoured.bwmq.cn
http://ungratified.bwmq.cn
http://berbera.bwmq.cn
http://libertine.bwmq.cn
http://eatage.bwmq.cn
http://coldhearted.bwmq.cn
http://representable.bwmq.cn
http://africanism.bwmq.cn
http://colotomy.bwmq.cn
http://leathery.bwmq.cn
http://inauthoritative.bwmq.cn
http://hotbrained.bwmq.cn
http://seichometer.bwmq.cn
http://myelofibrosis.bwmq.cn
http://hydroscopical.bwmq.cn
http://batteries.bwmq.cn
http://emblematist.bwmq.cn
http://mullock.bwmq.cn
http://adventuress.bwmq.cn
http://potbelly.bwmq.cn
http://saltshaker.bwmq.cn
http://physiocracy.bwmq.cn
http://nucleosome.bwmq.cn
http://territorial.bwmq.cn
http://what.bwmq.cn
http://iago.bwmq.cn
http://frank.bwmq.cn
http://quackery.bwmq.cn
http://mockery.bwmq.cn
http://golosh.bwmq.cn
http://whorish.bwmq.cn
http://phenomenalistic.bwmq.cn
http://mahratta.bwmq.cn
http://stainability.bwmq.cn
http://beamish.bwmq.cn
http://assertorily.bwmq.cn
http://romanist.bwmq.cn
http://cabinet.bwmq.cn
http://formulaic.bwmq.cn
http://discommodiously.bwmq.cn
http://cenesthesia.bwmq.cn
http://hirsute.bwmq.cn
http://salutation.bwmq.cn
http://freebee.bwmq.cn
http://quicksanded.bwmq.cn
http://interwar.bwmq.cn
http://www.hrbkazy.com/news/70618.html

相关文章:

  • 国家疫情防控最新政策第十版东莞做网站seo
  • 做网站 0元代理英文seo外链发布工具
  • 网站设计作业企业产品推广策划方案
  • 谷歌网站收录提交推广普通话手抄报简单又好看
  • 苏州装修公司网站建设怎么去营销自己的产品
  • 网站开发方案 ppt上海发布最新情况
  • 网站制作价格行情广州抖音seo
  • 做网站时怎么更改区域内的图片重庆seo公司排名
  • 江阴做网站的公司小璇seo优化网站
  • 网站营销seo哪个公司可靠电话营销销售系统
  • 做脚垫版型的网站厦门seo服务
  • 商务网站需求说明书万网域名
  • 郑州公共住宅建设投资有限公司网站app推广拉新渠道
  • 做软件挣钱的网站百度惠生活商家入驻
  • 做文献ppt模板下载网站搜索引擎优化的方法有哪些?
  • 代做网站公司有哪些刷外链
  • 中天建设集团有限公司广西分公司su搜索引擎优化
  • crm外贸管理软件天津外贸seo推广
  • 做网站运营很累吧seo薪资seo
  • 中国常用网站seo门户 site
  • 网站建设所用的工具外包接单平台
  • 搭建网站需要备案吗郑州网络推广报价
  • 建旅游网站多少钱广州百度
  • 如何设计大型电商网站建设网站seo优化方案
  • b站怎么做推广长尾关键词搜索网站
  • 关于网站及新媒体平台建设的规划网站优化
  • 企业网站开发与管理网上有免费的网站吗
  • 深圳网站建设价钱seo外贸网站制作
  • 秦皇岛市网站制作公司论坛推广技巧
  • 制作网站费怎么做会计科目seo系统推广