Unix套接字 - 摘要



這是一個與套接字程式設計相關的全部函式列表。

埠和服務函式

Unix提供以下函式從`/etc/services`檔案中獲取服務名。

  • struct servent *getservbyname(char *name, char *proto) − 此呼叫接收一個服務名和一個協議名,並返回該服務的對應埠號。

  • struct servent *getservbyport(int port, char *proto) − 此呼叫接收一個埠號和一個協議名,並返回對應的服務名。

位元組序函式

  • unsigned short htons (unsigned short hostshort) − 此函式將16位(2位元組)數量從主機位元組序轉換為網路位元組序。

  • unsigned long htonl (unsigned long hostlong) − 此函式將32位(4位元組)數量從主機位元組序轉換為網路位元組序。

  • unsigned short ntohs (unsigned short netshort) − 此函式將16位(2位元組)數量從網路位元組序轉換為主機位元組序。

  • unsigned long ntohl (unsigned long netlong) − 此函式將32位數量從網路位元組序轉換為主機位元組序。

IP地址函式

  • int inet_aton (const char *strptr, struct in_addr *addrptr) − 此函式呼叫將指定的字串(使用Internet標準點分十進位制表示法)轉換為網路地址,並將地址儲存在提供的結構體中。轉換後的地址將採用網路位元組序(位元組從左到右排列)。如果字串有效,則返回1,否則返回0。

  • in_addr_t inet_addr (const char *strptr) − 此函式呼叫將指定的字串(使用Internet標準點分十進位制表示法)轉換為適合用作Internet地址的整數值。轉換後的地址將採用網路位元組序(位元組從左到右排列)。它返回一個32位二進位制網路位元組序IPv4地址,出錯時返回INADDR_NONE。

  • char *inet_ntoa (struct in_addr inaddr) − 此函式呼叫將指定的Internet主機地址轉換為Internet標準點分十進位制表示法的字串。

套接字核心函式

  • int socket (int family, int type, int protocol) − 此呼叫返回一個套接字描述符,您可以在以後的系統呼叫中使用它,或者在出錯時返回-1。

  • int connect (int sockfd, struct sockaddr *serv_addr, int addrlen) − connect函式由TCP客戶端用來與TCP伺服器建立連線。如果成功連線到伺服器,此呼叫返回0,否則返回-1。

  • int bind(int sockfd, struct sockaddr *my_addr,int addrlen) − bind函式將本地協議地址分配給套接字。如果成功繫結到地址,此呼叫返回0,否則返回-1。

  • int listen(int sockfd, int backlog) − listen函式僅由TCP伺服器呼叫以監聽客戶端請求。此呼叫在成功時返回0,否則返回-1。

  • int accept (int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen) − accept函式由TCP伺服器呼叫以接受客戶端請求並建立實際連線。此呼叫在成功時返回非負描述符,否則返回-1。

  • int send(int sockfd, const void *msg, int len, int flags) − send函式用於透過流套接字或已連線的資料報套接字傳送資料。此呼叫返回傳送出的位元組數,否則返回-1。

  • int recv (int sockfd, void *buf, int len, unsigned int flags) − recv函式用於透過流套接字或已連線的資料報套接字接收資料。此呼叫返回讀取到緩衝區的位元組數,否則在出錯時返回-1。

  • int sendto (int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen) − sendto函式用於透過未連線的資料報套接字傳送資料。此呼叫返回傳送的位元組數,否則返回-1。

  • int recvfrom (int sockfd, void *buf, int len, unsigned int flags struct sockaddr *from, int *fromlen) − recvfrom函式用於從未連線的資料報套接字接收資料。此呼叫返回讀取到緩衝區的位元組數,否則返回-1。

  • int close (int sockfd) − close函式用於關閉客戶端和伺服器之間的通訊。此呼叫在成功時返回0,否則返回-1。

  • int shutdown (int sockfd, int how) − shutdown函式用於優雅地關閉客戶端和伺服器之間的通訊。與close函式相比,此函式提供了更多控制。成功時返回0,否則返回-1。

  • int select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout) − 此函式用於讀取或寫入多個套接字。

套接字輔助函式

  • int write (int fildes, const void *buf, int nbyte) − write函式嘗試將buf指向的緩衝區的nbyte位元組寫入與開啟的檔案描述符fildes關聯的檔案。成功完成時,write()返回實際寫入與fildes關聯的檔案的位元組數。此數字永不大於nbyte。否則,返回-1。

  • int read (int fildes, const void *buf, int nbyte) − read函式嘗試將與開啟的檔案描述符fildes關聯的檔案的nbyte位元組讀取到buf指向的緩衝區中。成功完成時,write()返回實際寫入與fildes關聯的檔案的位元組數。此數字永不大於nbyte。否則,返回-1。

  • int fork (void) − fork函式建立一個新的程序。新程序(稱為子程序)將是呼叫程序(父程序)的精確副本。

  • void bzero (void *s, int nbyte) − bzero函式在字串s中放置nbyte個空位元組。此函式將用於使用空值設定所有套接字結構。

  • int bcmp (const void *s1, const void *s2, int nbyte) − bcmp函式將位元組字串s1與位元組字串s2進行比較。假定兩個字串的長度均為nbyte位元組。

  • void bcopy (const void *s1, void *s2, int nbyte) − bcopy函式將nbyte位元組從字串s1複製到字串s2。重疊字串可以正確處理。

  • void *memset(void *s, int c, int nbyte) − memset函式也用於像bzero一樣設定結構體變數。

廣告