網絡編程-----bind()、listen()
阿新 • • 發佈:2018-11-09
物理地址 之前 最大 傳輸層 list brush 返回值 font 不能
繼上篇socket之後,又出一坑。。。篇簡單的理解
bind()
函數原型:int
bind(
int
sockfd ,
const
struct
sockaddr * my_addr, socklen_t addrlen);
參數說明:
sockfd:套接口描述字,這個不多說了,就是函數socket()的返回值;
my_addr:指針,指向一個結構體,該結構體包含GameServer的信息;在GameServer中,包含的是協議族、server地址(一般都是本地的物理地址)、端口號;在client中包含協議族、server地址、連接的端口號;
struct sockaddr_in { sa_family_t sin_family; //協議族 uint16_t sin_port; //連接端口 struct in_addr sin_addr; //server地址 };
struct in_addr{ In_addr_t s_addr; };
addrlen:結構體長度;
返回值:0,綁定成功;-1,綁定失敗;
listen()
函數原型:int listen( int sockfd, int backlog);
函數說明:
sockfd:套接口描述字,也不多說;
backlog:允許客戶機連接的最大長度;
返回值:-1,監聽失敗;0,監聽成功;
特別說明一下這個函數,小博之前踩過坑;首先listen之前必須要先bind套接口描述字,其次監聽的範圍,僅僅只能監聽傳輸層上的套接口描述字,說白了就是只能監聽TCP、UDP,而不能監聽原始套接口描述字;因為所在層不同;
網絡編程-----bind()、listen()