Skip to content

Latest commit

 

History

History
69 lines (43 loc) · 2.27 KB

platform_net_socket.md

File metadata and controls

69 lines (43 loc) · 2.27 KB

平台抽象层——socket

  • platform_net_socket.c

  • platform_net_socket.h

各个平台层的socket api接口,因为某些平台的socket并非标准的,因此在此对他们进行了封装,统一了网络的socket接口,但其内部的操作基本不会相差太大,主要是满足socketsocket、connect、read/recv、write、setsockopt、clos等操作。

外部函数

  • 根据指定的服务器地址host、端口号port与协议类型proto连接服务器,期间会创建socket描述符,如果host是域名将进行域名解析操作,然后connect服务器,在连接失败的时候closesocket描述符
int platform_net_socket_connect(const char *host, const char *port, int proto)
  • 读取指定长度len的数据,默认socket描述符是阻塞io,当没有数据可读时将持续阻塞,读取到的数据存放到指定的buf区域,flags一般为0。
int platform_net_socket_recv(int fd, void *buf, size_t len, int flags)
  • 读取指定长度len的数据,指定阻塞的超时时间timeout,在超时时间到达后,将不再阻塞。
int platform_net_socket_recv_timeout(int fd, unsigned char *buf, int len, int timeout)
  • socket描述符写入指定长度lenbuf区域的数据,然后发送出去,当不可写的时候会阻塞。
int platform_net_socket_write(int fd, void *buf, size_t len)
  • socket描述符写入指定长度lenbuf区域的数据,当不可写的时候会阻塞,但在超时时间到达后,将不再阻塞。
int platform_net_socket_write_timeout(int fd, unsigned char *buf, int len, int timeout)
  • 关闭socket描述符。
int platform_net_socket_close(int fd)
  • 设置socket描述符为阻塞模式。
int platform_net_socket_set_block(int fd)
  • 设置socket描述符为非阻塞模式。
int platform_net_socket_set_nonblock(int fd)
  • 设置socket描述符的其他操作,与setsockopt()函数的处理是一样的。
int platform_net_socket_setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)

上一篇平台抽象层—互斥锁

下一篇平台抽象层—tcp直连