简介
1、Socket 英文原意是“孔”或者“插座”的意思,在网络编程中,通常将其称之为“套接字”,当前网络中的主流程序设计都是使用 Socket 进行编程的,因为它简单易用,更是一个标准,能在不同平台很方便移植。 2、socket是统一的编程接口,具有高移植性(但是没有Windows或者linux上这么完善,但是一般的应用都是够了的),而netconn是lwip所独有的。 3、在 Socket 中,它使用一个套接字来记录网络的一个连接,套接字是一个整数,就像我们操作文件一样,利用一个文件描述符,可以对它打开、读、写、关闭等操作,类似的,在网络中,我们也可以对 Socket 套接字进行这样子的操作,比如开启一个网络的连接、读取连接主机发送来的数据、向连接的主机发送数据、终止连接等操作。 4、在 LwIP 中,Socket API 是 基 于 NETCONN API 之 上 来 实 现 的, 系 统 最 多 提 供MEMP_NUM_NETCONN 个 netconn 连接结构,因此 Socket 套接字的个数也是那么多个。 5、为了更好对 netconn 进行封装,LwIP 还定义了一个套接字结构体——lwip_sock(我称之为 Socket连接结构),每个 lwip_sock 内部都有一个 netconn 的指针,实现了对 netconn 的再次封装 6、LwIP 定义了一个 lwip_sock 类型的 sockets 数组,通过套接字就可以直接索引并且访问这个结构体了,这也是为什么套接字是一个整数的原因,lwip_sock 结构体是比较简单的,因为基本上全是依赖 netconn 实现。
|