socket函数

int bind(int sock, struct sockaddr *addr, socklen_t addrlen);  //Linux
int bind(SOCKET sock, const struct sockaddr *addr, int addrlen);  //Windows

bind函数  命名socket

listen() 函数

nt listen(int sock, int backlog);  //Linux
int listen(SOCKET sock, int backlog);  //Windows

底层会创建两个队列,未连接的队列和已经连接的队列

sock 为需要进入监听状态的套接字,backlog 为请求队列的最大长度。(未连接的和已经连接的)

所谓被动监听,是指当没有客户端请求时,套接字处于“睡眠”状态,只有当接收到客户端请求时,套接字才会被“唤醒”来响应请求

accept() 函数

当套接字处于监听状态时,可以通过 accept() 函数来接收客户端请求

    int accept(int sock, struct sockaddr *addr, socklen_t *addrlen);  //Linux
    SOCKET accept(SOCKET sock, struct sockaddr *addr, int *addrlen);  //Windows

accept() 返回一个新的套接字来和客户端通信,addr 保存了客户端的IP地址和端口号,而 sock 是服务器端的套接字,大家注意区分。后面和客户端通信时,要使用这个新生成的套接字,而不是原来服务器端的套接字。

connect() 函数

int connect(int sock, struct sockaddr *serv_addr, socklen_t addrlen);  //Linux
int connect(SOCKET sock, const struct sockaddr *serv_addr, int addrlen);  //Windows

 

上一篇:winsock编程入门


下一篇:INET LAYER--UDP socket