網路程式設計-----bind()、listen()
阿新 • • 發佈:2018-11-09
繼上篇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,而不能監聽原始套介面描述字;因為所在層不同;