htonshtonl、ntohl、ntohs是用来在网络字节顺序和本机字节顺序之间相互转换的函数。

可以这么理解:

n   :network;h   :host;s:short;l:long

htons   :host    to    network     short型,依次类推。

具体用法为:

htons

htons( u_short hostshort);

hostshort:主机字节顺序表达的16位数。

注释:

本函数将一个16位数从主机字节顺序转换成网络字节顺序。

返回值:

htons()返回一个网络字节顺序的值。

其余的同理。

struct sockaddr_in servaddr;

bzero(&servaddr,sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

servaddr.sin_port = htons(SERV_PORT);

INADDR_ANY http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631046843d400397634b87834e29938448e435061e5a22b8ec623f1303d0c578600ab8492bb0b66966725e60e19493d4198bedd23f2ef83033040b8731418f52&p=c9759a4ecc9712a058b8c03d16&user=baidu
INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。 一般来说,在各个系统中均定义成为0值。
例如MontiVista Linux中在/usr/include/netinet/in.h定义为:
/* Address to accept any incoming messages.   */
#define INADDR_ANY              ((in_addr_t) 0x00000000)

一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。——也就是说,你的程序要绑定服务器的某地址,或者说:把服务器的某地址上的某端口占为已用。服务器操作系统可以给你这个指定的地址,也可以不给你。
如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听。例如:
Proto Recv-Q Send-Q   Local Address       Foreign Address        (state)

SERV_PORT

:::::::::::::::
:: SERV_PORT ::
:::::::::::::::
(only sysop, init.bcm, only Linux/Win32)
Syntax: SER(V_PORT) [<n>]
(default: 8123)Defines the port number of the service interface. "0" disables the port.
Example: SERV_PORT 0See also HELP PORTNUMBER and HELP SERV

AF_前缀代表地址族 PF_前缀代表协议族

转载于:https://www.cnblogs.com/zhangjing0502/archive/2012/06/26/2564025.html

htons htonl ntohl ntohs 的区别和作用相关推荐

  1. htonl/htons以及ntohl/ntohs等函数使用说明

    htonl/htons以及ntohl/ntohs等函数都是为了解决主机和网络字节序不同而实现的函数,不同的是使用情况不同:htonl/htons用在主机设置相关参数到网络之前,ntohl/ntohs是 ...

  2. C/C++htonl(), ntohl(), ntohs(),htons()

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题.这是就可能用到htons(), ntohl(), ntohs(),htons()这4个函数. 网络字节顺序与本地字节顺序之间的转 ...

  3. htons() ntohl() ntohs() htons()的区别及详解

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  4. htonl ntohl htons ntohs

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  5. ntohs, ntohl, htons,htonl的比较和详解

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  6. ntohs, ntohl, htons,htonl

    ntohs, ntohl, htons,htonl的比较和详解 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs( ...

  7. ntohl()、htonl()、ntohs()、htons()函数

    一 .大端存储和小端存储 1.大端存储:在计算机中,数据是按照字节存储的,多于一个字节的数据,把高字节部分存储在低地址,把低字节部分存储在高地址,这种方式称为大端存储. 例:0x12345678这个数 ...

  8. ntohl()、htonl()、ntohs()、htons()函数用法

    ntohl().htonl().ntohs().htons()这几个函数的作用是进行字节顺序的转换,在理解这几个函数之前,我们先了解一下数据的存储. 一.大端存储和小端存储   1.大端存储:在计算机 ...

  9. htonl(), ntohl(), htons(), ntohs() 函数

    转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284892.html 在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题 ...

  10. Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)

    Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa) htonl() htons() ntohl() ntohs()及inet_n ...

最新文章

  1. docker strace ptrace 报错 Operation not permitted 解决方法
  2. 请重新认识你作为程序员的价值
  3. 干净卸载mysql (注册表)
  4. LeetCode-剑指 Offer 22. 链表中倒数第k个节点
  5. python安装失败0x80070570_固态硬盘装win7出现错误代码0x80070570怎么办
  6. P1083 借教室(差分+二分)
  7. Next Permutation
  8. 前端学习(1962)vue之电商管理系统电商系统之渲染商品分类的选择框
  9. 与自定义词典 分词_使用jieba库进行中文分词、关键词提取、添加自定义的词典进行分词...
  10. Linux下用户、组、权限操作
  11. 四、python实现粒子群算法
  12. 用什么软件可以编辑pdf文件
  13. C语言结构体,共用体所占字节数计算
  14. httpwatch使用_使用PHP#2自动化HTTPWatch
  15. 泰坦尼克号乘客生存预测
  16. 回顾过去,才能展望未来
  17. 修改电脑qq的聊天背景
  18. Java运行乱码,Idea编码设置
  19. 使用oschina的git服务器
  20. 机器学习中的数学——Adam(Adaptive Moments)

热门文章

  1. PHP单元测试PHPUnit
  2. 带ant 的收发器_ANT无线收发器nRF24AP1及其应用
  3. OkHttp之BridgeInterceptor简单分析
  4. 腾讯看点基于 Flink 的实时数仓及多维实时数据分析实践
  5. webStrom 开始你的第一个React应用
  6. MediaCodec进行编解码AAC(文件格式转换)
  7. ijkplayer框架深入剖析
  8. linux网页视频黑边,ffmpeg去除视频黑边命令
  9. python terminal_一个简单、易用的Python命令行(terminal)进度条库
  10. php 修改文件的权限_php修改文件权限