嵌入式Linux网络编程(一)

本文介绍了TCP/IP模型及Socket编程的基础知识,包括网络通信的分层模型、网络地址表示方式,以及如何使用sockaddr和sockaddr_in结构体来处理IP地址和端口。此外,还介绍了IP地址转换的相关函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络协议

国际标准组织(ISO)制定了OSI模型,把网络通信分为7层。而TCP/IP将网络通信分为4层:应用层,传输层,网络互连层,网络接口层。

Socket接口是TCP/IP网络的API,定义了许多函数和例子。

1.网络地址:

网络地址的表示主要通过两个重要的数据类型,结构体:sockaddr和sockaddr_in。

(1)结构体sockaddr

struct sockaddr{

          unsigned short sa_family;                  /*地址族,AF_xxx*/

          char sa_data[14];                              /*14字节的协议地址*/

};

sa_family:   一般是AF_INET,代表Internet(TCP/IP)地址族的IPV4协议。

sa_data:     包含了一些远程计算机的IP地址,端口号和套接字的数目。

(2)结构体sockaddr_in

struct sockaddr_in{

                              short int sin_family;                              /*地址族*/

                              unsigned short int sin_port;                 /*端口号*/

                              struct in_addr sin_addr;                        /*IP地址*/

                             unsigned char sin_zero[8];                    /*填充0以保持大小*/

}

sin_zero用来将sockaddr_in结构填充到与struct sockaddr同样的长度。

2.IP地址转换

在网络中IP都是点分十进制的格式,如"192.168.0.1",而在struct in_addr结构中用的是32位的IP,上面那个32位IP转换可以用到下面两个函数:

int inet_aton(const char *cp,struct in_addr *inp)

char *inet_ntoa(struct in_addr in)

第一个函数表示将“a.b.c.d”的IP转换成32位的IP,存储在inp指针中;第二个函数将32位IP转换成“a.b.c.d”的格式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JensLee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值