軟件設(shè)計(jì)師考試復(fù)習(xí)指導(dǎo):socket簡要

字號:

內(nèi)容簡介:
     套接字結(jié)構(gòu)
    struct sockaddr_in
    {
    short int sin_family; //地址類型 AF_XXX(AF_UNIX,AF_INET和AF_NS)
    unsigned short int sin_port; //16位端口號
    struct in_addr sin_addr; //32位IP地址
    char sin_zero[8]; //保留
    } //端口號以及 Internet 地址使用的是網(wǎng)絡(luò)字節(jié)順序,需要通過函數(shù) htons 轉(zhuǎn)換
     主機(jī)結(jié)構(gòu)
    struct hostent
    { char *h_name ; //主機(jī)的正式名稱
    char * *h_aliases ; //別名列表
    int h_addrtype ; //主機(jī)地址類型:AF_XXX
    lnt H_length; //主機(jī)地址長度:4 字節(jié)(32 位)
    char * *h_addr_list;//主機(jī) IP 地址列表
    }
     函數(shù)庫
     1. int socket(int domain,int type,int protocol);
     函數(shù) socket 創(chuàng)建一個(gè)套接字描述符,如果失敗返回 -1.domain為地址類型AF_XXX,type為套接字類型,SOCK_STREAM(TCP),SOCK_DGRAM (UDP),SOCK_RAW(IP、ICMP);protocol 指定協(xié)議 0為默認(rèn)模式 。
     2. int bind(int sockfd,struct sockaddr *hostaddr,int addrlen);
     函數(shù)bind將本地地址與套接字綁定在一起,成功返回0,失敗為-1,并設(shè)置全局變量errno為錯(cuò)誤類型
    EADDRINUSER。
     3. int connect( int sockfd,struct sockaddr *servaddr, int addrlen);
     函數(shù)connect與服務(wù)器建立一個(gè)連接,成功返回 0,失敗返回- 1。servaddr 為遠(yuǎn)程服務(wù)器的套接字地址,包括服務(wù)器的 IP 地址和端口號;addrlen 為地址的長度。
     4. int accept(int sockfd,struct sockaddr *addr,int *addrlen)
     函數(shù)accept從listen的完成連接隊(duì)列中接收一個(gè)連接,如果連接隊(duì)列為空,則該進(jìn)程睡眠。