1. 程式人生 > >網路socket程式設計【linux/C】

網路socket程式設計【linux/C】

知識點總結:

1、int socket(int family,int type,int protocol)
family:
指定使用的協議簇:AF_INET(IPv4) AF_INET6(IPv6) AF_LOCAL(UNIX協議) AF_ROUTE(路由套接字) AF_KEY(祕鑰套接字)
type:
指定使用的套接字的型別:SOCK_STREAM(位元組流套接字) SOCK_DGRAM
protocol:
如果套接字型別不是原始套接字,那麼這個引數就為0

2、int bind(int sockfd, struct sockaddr *myaddr, int addrlen)


sockfd:
socket函式返回的套接字描述符
myaddr:
是指向本地IP地址的結構體指標
myaddrlen:
結構長度
struct sockaddr{
unsigned short sa_family; //通訊協議型別族AF_xx
char sa_data[14]; //14位元組協議地址,包含該socket的IP地址和埠號
};
struct sockaddr_in{
short int sin_family; //通訊協議型別族
unsigned short int sin_port; //埠號
struct in_addr sin_addr; //IP地址
unsigned char si_zero[8]; //填充0以保持與sockaddr結構的長度相同
};

3、int connect(int sockfd,const struct sockaddr *serv_addr,socklen_t addrlen)
sockfd:
socket函式返回套接字描述符
serv_addr:
伺服器IP地址結構指標
addrlen:
結構體指標的長度

4、int listen(int sockfd, int backlog)
sockfd:
socket函式繫結bind後套接字描述符
backlog:
設定可連線客戶端的最大連線個數,當有多個客戶端向伺服器請求時,收到此值的影響。預設值20

5、int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)


sockfd:
socket函式經過listen後套接字描述符
cliaddr:
客戶端套接字介面地址結構
addrlen:
客戶端地址結構長度

6、int send(int sockfd, const void *msg,int len,int flags)

7、int recv(int sockfd, void *buf,int len,unsigned int flags)
sockfd:
socket函式的套接字描述符
msg:
傳送資料的指標
buf:
存放接收資料的緩衝區
len:
資料的長度,把flags設定為0