WIZnet socket API 前言

发布时间 2023-11-22 11:04:36作者: Slickzz

WIZnet socket API

WIZnet socket APIs 基于 Berkeley socket APIs,因此有着相似的名字和接口。但是也是有着些许的不同。

API WIZnet Berkeley
socket() O O
bind() X O
listen() O O
connect() O O
accept() X O
recv() O O
send() O O
recvfrom() O O
sendto() O O
closesocket() O close() & disconnect() O

bind() 函数和 accept() 函数在 Berkeley socket APIs 中,但 WIZnet socket APIs 中并没有。这是因为 WIZnet 的 socket() 函数不但创建了一个 SOCKET 还绑定了一个本地端口号,并且 WIZnet 中的 listen() 不仅仅监听来自客户端的连接请求还接受连接请求。

当开发者使用 Berkeley socket APIs 进行 TCP SERVER 编程时,开发者只能监听一个端口。在服务端编写的监听 SOCKET 接受来自客户端的连接请求时,它会持续侦听。收到连接请求后,服务端都会创建一个新的 socket ,这个新的 socket 用来和就客户端进行通信。

image.png

当开发者使用 WIZnet socket APIs 进行 TCP SERVER 编程时,开发者可以对同一个端口使用最多 8 个监听 SOCKET 。原因是在 WIZnet socket APIs 中没有 accept() ,当服务端的监听 SOCKET 接受来自客户端的连接请求时,它会被更改为了与客户端通信。并且更改后的 SOCKET 不再侦听,而是专用于与客户端通信。如果有许多具有相同侦听端口号的侦听 SOCKET,并且客户端请求连接,则具有最小 SOCKET 编号的 SOCKET 将接受请求并更改为通信 SOCKET。

image.png