Linux socket 地址及常用函数

本文介绍了Linux下socket编程中IPv4地址结构,重点关注`INADDR_ANY`常量。讲解了`inet_aton`函数如何将点分十进制IP转换为32位网络字节序,以及`inet_ntoa`函数的功能,它是如何将网络字节序的IP转换为点分十进制字符串,但因其不可重入性需要注意使用方式。另外,提及`inet_addr`函数已被弃用。最后,提到了字节序转换的`shtoh`、`ltonh`等函数用于16位和32位数值在主机字节序与网络字节序之间的转换。
摘要由CSDN通过智能技术生成

IPv4套接字地址结构:

#include <netinet/in.h>
struct in_addr
{
     in_addr_t    s_addr;              /*32-bit,network byte orderd*/
};
struct sockaddr_in
{
   uint8           sin_len;
   sa_family_t     sin_family;         /*AF_INET*/
   in_port_t       sin_port;           /*16-bit,network byte ordered*/
   struct in_addr  sin_addr;
   char            sin_zero[8];
};

s_addr可以为宏 INADDR_ANY



地址转换函数:

#include <netinet/in.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);

char *inet_ntoa(struct in_addr inaddr);

inet_aton将strptr所指的C字符串转换成一个32位的网络字节序二进制值,并通过指针addrptr来存储。若成功则返回1,否则返回0。

ps:gcc编译时,如果用--std=c99选项,编译器会给出警告:“warning: implicit declaration of function ‘inet_aton’”,可以用--std=gnu99代替--std=c9

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值