首页 > 系统相关 >Linux htons()和htonl()简介

Linux htons()和htonl()简介

时间:2023-09-06 10:55:13浏览次数:38  
标签:htonl 字节 网络 内存 Linux htons addr

htons()

#include <arpa/inet.h> 
uint16_t htons(uint16_t hostshort); 

 

htons的功能:
                        将一个无符号短整型数值转换为网络字节序,即大端模式(big-endian)  

参数u_short hostshort: 16位无符号整数 

返回值:TCP / IP网络字节顺序.

TCP / IP网络字节顺序是什么?

htons 是把你机器上的整数转换成“网络字节序”, 网络字节序是 big-endian,也就是整数的高位字节存放在内存的低地址处。 而我们常用的 x86 CPU (intel, AMD) 电脑是 little-endian,也就是整数的低位字节放在内存的低字节处。

举个例子:
                假定你的port是  0x1234,  在网络字节序里 这个port放到内存中就应该显示成  addr addr+1  0x12 0x34  而在x86电脑上,0x1234放到内存中实际是:  addr addr+1  0x34 0x12 htons 的用处就是把实际内存中的整数存放方式调整成“网络字节序”的方式。

 

htonl()

功能:  将主机的无符号长整形数转换成网络字节顺序。 

#include <arpa/inet.h>  
uint32_t htonl(uint32_t hostlong);  

 

参数: hostlong:主机字节顺序表达的32位数。  
返回值:TCP / IP网络字节顺序.

  

在主机本身就使用大端字节序时,这些函数通常被定义为空宏。

标签:htonl,字节,网络,内存,Linux,htons,addr
From: https://www.cnblogs.com/FBsharl/p/17681698.html

相关文章

  • linux添加route
    临时添加:方法一:route命令添加:routeadd-net 192.168.168.0 netmask 255.255.255.0 gw 192.168.168.1deveth0route删除:routedel-host xxx gwxxx deveth0方法二:iproute添加:iproute add192.168.0.0/24 via下一跳 deveth0iproute删除:ip......
  • Linux C 进阶 —— 可变参数
    1#include<stdio.h>2#include<stdarg.h>3/*方式1C99宏方式GNUC扩展宏方式*/4#defineMC_C99_PRINT(fmt,...)printf(fmt,##__VA_ARGS__)//##作用:当变参列表为空时,消除fmt后的逗号5#defineMC_GNC_PRINT(fmt,args...)printf(fmt,##args)6/*......
  • Linux应用编程_多线程编程
    (1)线程的创建: pthread_ttid=pthread_self(); //获取当前线程的tid号 intret=pthread_create(&tid1,NULL,fun1,(void*)&a);//创建线程传入变量a的地址 ret=pthread_create(&tid2,NULL,fun2,(void*)(long)a);//创建线程传入变量a的值(2)线程的退出与回收: pth......
  • Linux应用编程_网络通信TCP/UDP
    (1)网络协议被分为5层 1)应用层:直接为用户的应用进程提供服务 HTTP协议,FTP协议,DNS,POP3,SNMP,Telnet 2)运输层(传输层):负责向两个主机中进程之间的通信提供服务 (基于TCP/UDP) (1)传输控制协议TCP(TransmissionControlProtocol): 1)数据传输的单位是报文段 2)面向......
  • Linux 命令总结
    Linux文件系统FHS3.0(FilesystemHierarchyStandard)/etc配置文件bin必要命令usr二级目录home家目录var动态数据VFS虚拟文件系统内核层抽象出通用的文件系统接口支持文件、网络、特殊文件系统抽象对象:超级快:文件系统目录项:文件路径索引节点:具体文件文件:进程打开的文件属性分层......
  • Linux运维工程师面试题(7)
    Linux运维工程师面试题(7)祝各位小伙伴们早日找到自己心仪的工作。持续学习才不会被淘汰。地球不爆炸,我们不放假。机会总是留给有有准备的人的。加油,打工人!1常用的ansible模块有哪些PingCommandShellScriptCopyFetchFileYumServiceUserGroupLineinfileRepla......
  • Linux运维工程师面试题(7)
    目录Linux运维工程师面试题(7)1常用的ansible模块有哪些2说一下ansible使用roles编排的目录结构3docker六大命名空间namespace4cgroups的作用5runc的作用6docker常用的命令7docker存储引擎有哪些,区别是什么8进入docker容器有几种方法,区别是什么9Dockerfile......
  • linux系统调优
    1.禁用swap分区swapoff-a&&sysctl-wvm.swappiness=0sed-ri'/^[^#]*swap/s@^@#@'/etc/fstabgrepswap/etc/fstab2. 禁用防火墙和selinux2.1禁用防火墙,网络管理,邮箱systemctldisable --nowfirewalldNetworkManagerpostfix 2.2禁用selinux2.2.1命令行直......
  • linux日志文件的查询方式
    cdlog到指定log日志文件目录ls查看当前文件存在的目录catjujube.log可以查看较小的日志文件vijujube.log查看较大的日志文件(常用)/(查询的字符)可以定位到这个字符的位置N继续向下检索:$回到日志文件的最底层可以用于从底层开始查找使用:$后配合使......
  • Linux中有哪些常用的网络命令,分别适用于什么场景?
    Linux作为一种广泛使用的操作系统,其网络功能非常强大。在Linux系统中,有很多网络相关的命令可以用于管理和配置网络,比如ifconfig、netstat、ping、traceroute、route等等。本文将对一些常用的Linux网络命令进行详细介绍。一、ifconfig命令ifconfig命令用于显示和配置Linux系统的网......