socket编程部分API

  以TCP协议为例,UNIX的相关API服务器

  

int socket(int domain , int type , int protocol);

  根据指定的地址族,数据类型,协议来分配一个socket的描述字以及所占用的资源。dom

  domain:协议族,常见的有AF_INET、AF_INET六、AF_LOCAL、AF_ROUTE,其中AF_INET表明ipv4地址socket

  type:socket类型,常见的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等spa

  protocol:协议。常见的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等blog

  返回值:返回一个套接口描述符0 or 1 or 2,若是出错,则返回-1。 接口

 

int bind(int sockfd , const struct sockaddr * addr , socklen_t addrlen);

  把一个地址族中的特定地址赋给socketip

  sockfd:socket描述字,便是sock引用资源

  addr:要绑定给sockfd的协议地址it

  addrlen:协议地址的长度class

  一般服务器在启动时要绑定一个众所周知的IP地址和端口,用于提供服务,客户经过它就能够链接到服务器。可是客户端与之不一样,客户端是在connect():时自动分配一个端口。这就是为何客户没有调用bind();的操做而服务器在listen();前须要bind();的操做。

  

int listen(int sockfd , int backlog);

  监听socket

  sockfd:要监听的socket描述字

  backlog:相应socket能够排队的最大链接个数

 

int connect(int sockfd , const struct sockaddr *addr , socklen_t addrlen);

  链接某个socket

  sockfd:某个客户端的描述字

  addr:服务器的socket地址

  addrlen:socket地址的长度

 

int accept(int sockfd , const struct sockaddr *addr , socklen_t *addrlen);

  TCP服务器监听到用户请求后,调用accept();接收请求

  sockfd:服务器的socket描述字

  addr:服务器的socket地址

  addrlen:服务器socket地址的长度

  · 返回值类型:返回的是一个不一样的socket,这个socket保存的是你客户端的socket信息

 

ssize_t read(int sockfd , void *buf , size_t count);

  读取socket内容

  sockfd:socket描述字

  buf:缓冲区

  count:缓冲区的长度

 

ssize_t write(int sockfd , void *buf , count);

  写入socket内容

  sockfd:socket描述字

  buf:缓冲区

  count:缓冲区长度

 

int close(int sockfd);

  标记socket为关闭,使相应socket描述字的引用计数为-1,当引用计数为0时,触发TCP客户端向服务器发送终止链接请求

相关文章
相关标签/搜索