INADDR_ANY:所有的地址
定義:
#include < netinet/in.h>
INADDR_ANY就是指定地址爲0.0.0.0的地址,這個地址事實上表示不確定地址,或“所有地址”、“任意地址”。 一般來說,在各個系統中均定義成爲0值。
/* Address to accept any incoming messages. */ #define INADDR_ANY ((in_addr_t) 0x00000000)
serveraddr.sin_addr.s_addr= INADDR_ANY;
char *local_addr="0.0.0.0";
serveraddr.sin_addr.s_addr=inet_addr(local_addr);//inet_addr轉換爲網絡字節序
幾個字節順序轉換函數:
·htonl():把32位值從主機字節序轉換成網絡字節序
·htons():把16位值從主機字節序轉換成網絡字節序
·ntohl():把32位值從網絡字節序轉換成主機字節序
·ntohs():把16位值從網絡字節序轉換成主機字節序
FD_ZERO(fd_set *set)----清除一個文件描述符集;
FD_SET(int fd,fd_set *set)----將一個文件描述符加入文件描述符集中;
FD_CLR(int fd,fd_set *set)----將一個文件描述符從文件描述符集中清除;
FD_ISSET(int fd,fd_set *set)----試判斷是否文件描述符被置位。
socket 參數。
int socket(int domain, int type, int protocol); 在參數表中,domain指定使用何種的地址類型,比較常用的有:
PF_INET, AF_INET: Ipv4網絡協議;
PF_INET6, AF_INET6: Ipv6網絡協議。
type參數的作用是設置通信的協議類型,可能的取值如下所示:
SOCK_STREAM: 提供面向連接的穩定數據傳輸,即TCP協議。
OOB: 在所有數據傳送前必須使用connect()來建立連接狀態。
SOCK_DGRAM: 使用不連續不可靠的數據包連接。
SOCK_SEQPACKET: 提供連續可靠的數據包連接。
SOCK_RAW: 提供原始網絡協議存取。
SOCK_RDM: 提供可靠的數據包連接。
SOCK_PACKET: 與網絡驅動程序直接通信。