2int netdev_set_ipaddr(struct netdev *netdev, const ip_addr_t *ipaddr);

3/* 设置网卡网关地址 */

4int netdev_set_gw(struct netdev *netdev, const ip_addr_t *gw);

5/* 设置网卡子网掩码地址 */

6int netdev_set_netmask(struct netdev *netdev, const ip_addr_t *netmask);

7/* 设置网卡 DNS 服务器地址,主要用于网卡域名解析功能 */

8int netdev_set_dns_server(struct netdev *netdev, uint8_t dns_num, const ip_addr_t *dns_server);

设置网卡回调函数

可以用于设备网卡状态改变时调用的回调函数,状态的改变包括:up/down、 link_up/link_down、internet_up/internet_down、dhcp_enable/dhcp_disable 等。

1ypedef void (*netdev_callback_fn )(struct netdev *netdev, enum netdev_cb_type type);

2void netdev_set_status_callback(struct netdev *netdev, netdev_callback_fn status_callback);

1.5 获取网卡信息

判断网卡是否为 up 状态

1#define netdev_is_up(netdev)

判断网卡是否为 link_up 状态

1#define netdev_is_link_up(netdev)

判断网卡是否为 internet_up 状态

1#define netdev_is_internet_up(netdev)

判断网卡 DHCP 功能是否开启

1#define netdev_is_dhcp_enable(netdev)

1.6 默认网卡自动切换

单网卡模式下,开启和关闭默认网卡自动切换功能无明显效果。

多网卡模式下,如果开启默认网卡自动切换功能,当前默认网卡状态改变为 down 或 link_down 时,默认网卡会切换到网卡列表中第一个状态为 up 和 link_up 的网卡。这样可以使一个网卡断开后快速切换到另一个可用网卡,简化用户应用层网卡切换操作。如果未开启该功能,则不会自动切换默认网卡。

1.7 FinSH 命令

了解协议栈的相关概念

2、套接字组件(SAL)

socket 编程模型如下图所示:

了解协议栈的相关概念

客户端使用流程:

socket() 创建一个 socket,返回套接字的描述符,并为其分配系统资源。

connect() 向服务器发出连接请求。

send()/recv() 与服务器进行通信。

closesocket() 关闭 socket,回收资源。

服务器使用流程:

socket() 创建一个 socket,返回套接字的描述符,并为其分配系统资源。

bind() 将套接字绑定到一个本地地址和端口上。

listen() 将套接字设为监听模式并设置监听数量,准备接收客户端请求。

accept() 等待监听的客户端发起连接,并返回已接受连接的新套接字描述符。