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客戶端向服務器發送終止鏈接請求

相關文章
相關標籤/搜索