首页 > 系统 > 关键词 > linux服务器最新资讯 > 正文

Linux网络编程--3.服务器和客户机的信息函数

2008-09-08 17:26 · 稿源:互联网

这一章我们来学习转换和网络方面的信息函数.

3.1字节转换函数
在网络上面有着许多类型的机器,这些机器在表示数据的字节顺序是不同的,比如i386芯片是低字节在内存地址的低端,高字节在高端,而alpha芯片却相反.为了统一起来,在Linux下面,有专门的字节转换函数.

unsignedlonginthtonl(unsignedlonginthostlong)
unsignedshortinthtons(unisgnedshortinthostshort)
unsignedlongintntohl(unsignedlongintnetlong)
unsignedshortintntohs(unsignedshortintnetshort)

在这四个转换函数中,h代表host,n代表network.s代表shortl代表long第一个函数的意义是将本机器上的long数据转化为网络上的long.其他几个函数的意义也差不多.

3.2IP和域名的转换
在网络上标志一台机器可以用IP或者是用域名.那么我们怎么去进行转换呢?

structhostent*gethostbyname(constchar*hostname)
structhostent*gethostbyaddr(constchar*addr,intlen,inttype)
在中有structhostent的定义
structhostent{
char*h_name;/*主机的正式名称*/
char*h_aliases;/*主机的别名*/
inth_addrtype;/*主机的地址类型AF_INET*/
inth_length;/*主机的地址长度对于IP4是4字节32位*/
char**h_addr_list;/*主机的IP地址列表*/
}
#defineh_addrh_addr_list[0]/*主机的第一个IP地址*/

gethostbyname可以将机器名(如linux.yessun.com)转换为一个结构指针.在这个结构里面储存了域名的信息
gethostbyaddr可以将一个32位的IP地址(C0A80001)转换为结构指针.

这两个函数失败时返回NULL且设置h_errno错误变量,调用h_strerror()可以得到详细的出错信息

3.3字符串的IP和32位的IP转换.
在网络上面我们用的IP都是数字加点(192.168.0.1)构成的,而在structin_addr结构中用的是32位的IP,我们上面那个32位IP(C0A80001)是的192.168.0.1为了转换我们可以使用下面两个函数

intinet_aton(constchar*cp,structin_addr*inp)
char*inet_ntoa(structin_addrin)

函数里面a代表asciin代表network.第一个函数表示将a.b.c.d的IP转换为32位的IP,存储在inp指针里面.第二个是将32位IP转换为a.b.c.d的格式.

3.4服务信息函数
在网络程序里面我们有时候需要知道端口.IP和服务信息.这个时候我们可以使用以下几个函数

intgetsockname(intsockfd,structsockaddr*localaddr,int*addrlen)
intgetpeername(intsockfd,structsockaddr*peeraddr,int*addrlen)
structservent*getservbyname(constchar*servname,constchar*protoname)
structservent*getservbyport(intport,constchar*protoname)
structservent
{
char*s_name;/*正式服务名*/
char**s_aliases;/*别名列表*/
ints_port;/*端口号*/
char*s_proto;/*使用的协议*/
}

一般我们很少用这几个函数.对应客户端,当我们要得到连接的端口号时在connect调用成功后使用可得到系统分配的端口号.对于服务端,我们用INADDR_ANY填充后,为了得到连接的IP我们可以在accept调用成功后使用而得到IP地址.

在网络上有许多的默认端口和服务,比如端口21对ftp80对应WWW.为了得到指定的端口号的服务我们可以调用第四个函数,相反为了得到端口号可以调用第三个函数.

3.5一个例子

#include
#include
#include
#include
#include

intmain(intargc,char**argv)
{
structsockaddr_inaddr;
structhostent*host;
char**alias;

if(argc<2)
{
fprintf(stderr,"Usage:%shostname|ip..\n\a",argv[0]);
exit(1);
}

argv++;
for(;*argv!=NULL;argv++)
{
/*这里我们假设是IP*/
if(inet_aton(*argv,&addr.sin_addr)!=0)
{
host=gethostbyaddr((char*)&addr.sin_addr,4,AF_INET);
printf("AddressinformationofIp%s\n",*argv);
}
else
{
/*失败,难道是域名?*/
host=gethostbyname(*argv);printf("Addressinformation
ofhost%s\n",*argv);
}
if(host==NULL)
{
/*都不是,算了不找了*/
fprintf(stderr,"Noaddressinformationof%s\n",*argv);
continue;
}
printf("Officialhostname%s\n",host->h_name);
printf("Namealiases:");
for(alias=host->h_aliases;*alias!=NULL;alias++)
printf("%s,",*alias);
printf("\nIpaddress:");
for(alias=host->h_addr_list;*alias!=NULL;alias++)
printf("%s,",inet_ntoa(*(structin_addr*)(*alias)));
}
}

在这个例子里面,为了判断用户输入的是IP还是域名我们调用了两个函数,第一次我们假设输入的是IP所以调用inet_aton,失败的时候,再调用gethostbyname而得到信息.
  • 相关推荐
  • 大家在看
  • 谷歌和英特尔警告Linux中存在高严重的蓝牙安全漏洞

    谷歌和英特尔警告说,除了最新版本的Linux内核外,其他所有版本的Linux内核都存在高严重性蓝牙漏洞。谷歌的一位研究人员表示,该漏洞允许攻击者在蓝牙范围内无缝执行代码,而英特尔则将该漏洞定性为提供特权升级或信息泄露。

  • 新的NTFS Linux内核驱动修订了九次 仍在审核中

    在8月份的时候,Paragon软件公司高调宣布,他们的NTFS读写驱动在作为商业驱动提供给那些需要在Linux上对微软文件系统进行可靠支持的用户多年后,将在Linux内核中进行主线开发。两个月后,他们已经对这个驱动进行了第九次修订,以争取将其纳入内核主线。

  • Linux 5.9.1以及部分旧版稳定内核已解决 "Bleeding Tooth"漏洞问题

    Linux5.9正式发布刚过去一周,修正版本的内核5.9.1就已经跟随而来,让这个稳定版本更值得关注的是包括了本周被Google与英特尔的安全人员公开及警告的"BleedingTooth"蓝牙漏洞的修复。BleedingTooth是一个影响Linux的远程代码执行漏洞,源于L2CAP代码中基于堆的类型混乱。

  • 知名程序员分析微软 Windows 未来或成 Linux 子系统

    微软的 Windows 10 已经发布两版 Windows subsystem For Linux,实现 Linux 二进制代码在 Windows 环境中运行。微软一直都在向开源社区示好,当然也包括 Linux,微软还将推出 Linux 版的 Edge 浏览器。知名程序员 Eric S Raymond 分析称,由于个人电脑市场业务正在下滑,对微软来说,有利可图的业务是 Azure,而且 Azure 运行在 Linux 上的机器要多与 Windows。Raymond 表示,微软以后可能会放弃

  • Linux Kernel 5.10本周合并引入了对 AMD/Intel新硬件的性能代码支持

    本周一的 Linux 5.10 窗口合并,为“Perf”子系统添加了对 AMD 和 Intel 新硬件的支持。除了大量的 Intel / AMD x86 更改,还有 Ingo Molnar 发出的性能事件查询请求。以 AMD Zen / Zen 2 处理器的运行时平均功率限制(RAPL)为例,其代码现已扩展适用于 Family 19h(即 Zen 3),辅以专为 AMD 制定的诸多性能修复。

  • 麒麟OS宣布兼容中望CAD:国内第一款Linux版自主CAD软件

    在Linux内核的系统上,日常使用的软件基本不是问题,麻烦的是一些专业软件,生产力跟不上是限制Linux的重要因素。今天国内的麒麟OS开发商中标软件宣布完成中望CAD的认证,这是国内首款Linux下的

  • 研究人员担心BleedingTooth蓝牙漏洞给Linux系统带来风险

    基于Linux的操作系统通常被认为比Windows等系统更安全,但这并不意味着它们完全没有安全问题。谷歌安全研究人员已经对Linux蓝牙堆栈中的一系列"零点击"漏洞发出警告。该漏洞被称为BleedingTooth,最坏的后果是带来远程代码执行攻击。

  • NVIDIA预计再过一个月才会有Linux 5.9驱动支持

    虽然NVIDIA在支持新版本的Linux内核方面通常都很及时,通常会争取在新系列的发布候选版本结束前出一个驱动程序,但就最近新出的Linux5.9内核而言,它需要的时间更长。NVIDIA上周五向客户发出提醒,他们预计在11月中旬之前,也就是内核发布稳定后一个月左右,他们的专有显卡驱动才会有Linux5.9内核支持。

  • 开源爱好者:Windows将被微软放弃、沦为Linux子系统

    Windows 10已经发布了两版Windows subsystem For Linux(WSL),也就是实现了Linux二进制代码在Windows环境下运行。开源软件爱好者Eric S Raymond开始认真审视微软的做法,包括微软即将面向Li

  • 为Linux内核贡献27.5万行代码中:AMD意外泄漏下一代APU信息

    AMD在不经意间泄露了自家下一代APU的信息,其代号“Van Gogh(梵高)”。据外媒报道称,AMD为下一代Van Gogh APU向Linux贡献了27.5万行代码,而GPU内核驱动已经为Van Gogh进行内核级

    AMD
  • 云安全日报200924:Linux内核发现最高系统特权升级漏洞,需要尽快升级

    9月23日,openwall邮件组发布了有关Linux内核特权升级漏洞的风险通知。该漏洞级别为高风险,因为该漏洞存在于内核中,所以如果成功利用该漏洞,将直接获得最高的系统特权。此漏洞带来的最大威胁是对数据机密性和完整性以及系统可用性的威胁。以下是漏洞详情:漏洞详情CVE-2020-14386 CVSS评分:7.8 严重程度:高该漏洞级别为高风险,本地攻击者可以通过向受影响的主机发送特制的请求内容来导致特权升级。因为该漏洞存在于内核(Ke

  • 如何通过SSD服务器配置评测选择美国服务器

    独立服务器是目前比较常见的建站空间产品,用服务器的站长往往也是比较看重服务器的一些性能,包括存储空间,访问速度,稳定性,更高一点要求会对硬盘的存储速度也比较看重,因此目前很多的SSD固态硬盘独立服务器在市场上比较流行。 不过选择一款比较好的服务器还是非常有讲究的,从服务器商的实力,产品的配置,技术支持,售后服务等等,都要全方面的考虑。这篇文章分享一下如何从服务器口碑及产品配置细节来选择一款合适的独立?

  • 苹果部分服务器宕机问题目前已修复

    9月30日消息,据外媒报道,不少网友反馈,苹果的几项服务似乎都遇到“服务器中断”的问题。消息称,Apple Music、Apple TV+、Apple News+、App Store等功能都出现了问题。例如,当尝试访问Apple Music或Apple TV+时,一些人的服务拒绝加载,并弹出连接警告。随后,该消息得到了苹果系统状态页面的证实。尽管目前尚不清楚造成服务中断的原因是什么,但大约三小时后,苹果似乎已经解决了问题。这让人想起上一次苹果服务?

  • 苹果:服务器中断已恢复 iCloud、音乐等服务正常使用

    就在刚刚,苹果官方给出消息称,今天早些时候出现的服务器中断问题已经修复。

  • Netflix宣布取消30天免费试用服务

    据外媒报道,接下来,用户要么完全支持Netflix要么完全退出,因为这家流媒体巨头已经取消了他们的免费试用服务。现在,用户必须要注册一个Netflix的套餐才行,不过该套餐没有合同约束,用户可以随时取消。

  • 通过盲盒传递温度 KOLILIKO自有生态优势初显

    2020 年CICF中国国际漫画节动漫游戏展在国庆期间如期举办,新生潮玩品牌KOLILIKO口力力口(以下简称KOLILIKO)作为主办方合作伙伴受邀参展,携两大自主IP首次线下亮相。在赛道愈发拥挤的盲盒领域,新品牌如何突出重围? 行业赛道加剧争抢 自有生产链优势初显 潮玩行业在近两年增长迅猛,无论资本还是企业,都纷纷抢夺赛道,渴望从中分一杯羹。也有专家表示,潮玩行业尚处于发展初期,行业处于风口小趋势,至少还有五年高速增长态势。

  • 苹果服务器崩了!iCloud等无法访问、千万别刷机

    ​北京时间今晨,苹果全球多个服务出现宕机和网络中断情况。截止上午 10 点 00 分,苹果中国系统状态页面显示,仍有包括iCloud通讯录、网页APP、云备份、Apple Pay、Apple Music等在内的二十多项服务处于中断状态。

  • 美国土安全部发布紧急警告:Windows服务器存在“严重”漏洞

    美国国土安全部网络安全与基础设施安全局(CISA)发布了一项罕见的紧急指令,敦促政府机构为Windows服务器的一个“关键”漏洞安装补丁,该漏洞被安全机构称为Zerologon。

  • 西部数码云服务器CC防护全新升级:高效防御更省钱!

    CC攻击,是指攻击者通过模拟大量用户访问,制造高并发请求,从而消耗掉服务器CPU、带宽等资源,最终导致服务器瘫痪,目标网站或应用无法正常提供服务,破坏性非常大。但因为CC攻击不像ddos攻击可以用硬件防火墙来过滤攻击,对于一般企业用户来说,防护难度很大。为帮助广大企业和个人站长有效抵御CC攻击,维护服务器网络安全,西部数码研发团队近日对云服务器CC防护进行重磅升级。全新升级后的CC防护功能可满足用户不同的防护需求?

  • 腾讯云服务器双十一大额代金券领取地址 2020腾讯云服务器优惠代金券

    腾讯云服务器在最近开启了双十一的预热活动——云上盛惠,其中可以领取到超大额的代金券大礼包,有个人券和企业券,一些小伙伴还不清楚腾讯云服务器的这些代金券在哪领取,下面就来为大家分享一下。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议
  • 热门标签