socket中的网络字节序/本地字节序互相转换函数。

(1)inet_addr :转换字符串到地址

(2)inet_ntoa  转换地址到字符串

(3)htons  ,h=host,n=network,s = short 。常用于绑定之前地址结构体的设置,将本机端口转为网络字节序。

(4)ntohs ,h=host,n=network,s = short。 常用于与对方通信后,在需要使用对方端口的时候,将其中(收到的对方端口为网络字节序)转为主机字节序。

(5)inet_pton, p=pointer n=network。功能同(1),该函数只在linux下有效,winsock无此函数。

(6)inet_ntop ,p=pointer n=network。功能同(2),该函数只在linux下有效,winsock无此函数。

(7)htonl,将unsigned long 数据从主机序转为网络序列。(用于格式化本机数据,在网络中传输

(8) ntohl,将unsigned long 数据从网络序转为主机序列。(用于将网络中接收到的数据转化为本地可识别的整数


示例:

(1)和(3)

struct sockaddr_in serv_addr;
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr("127.0.0.1");
serv_addr.sin_port=htons(5000);

(2)和(4),假设此时cli_addr结构体已通过accept填充。

struct sockaddr_in cli_addr;
puts(inet_ntoa(cli_addr.sin_addr));
printf("%d\n" ,ntohs(cli_addr.sin_port));

(5)和(6)

  struct in_addr s;
  inet_pton(AF_INET, "127.0.0.1", (void *)&s);
  printf("inet_pton: 0x%x\n", s.s_addr);
  char addr_str[16]={0x00};
  inet_ntop(AF_INET, (void *)&s, addr_str, 16);
 


  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值