加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

listen和accept函数 使套接字进入监听状态并响应客户端请求

发布时间:2022-07-10 21:05:18 所属栏目:语言 来源:互联网
导读:对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。 listen() 函数 通过 listen() 函数可以让套接字进入被动监听状态,它的原型为: int listen(int
  对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。
  listen() 函数
  通过 listen() 函数可以让套接字进入被动监听状态,它的原型为:
  int listen(int sock, int backlog);  //Linux
  int listen(SOCKET sock, int backlog);  //Windows
  sock 为需要进入监听状态的套接字,backlog 为请求队列的最大长度。
 
  注意:listen() 只是让套接字处于监听状态,并没有接收请求。接收请求需要使用 accept() 函数。
  accept() 函数
  当套接字处于监听状态时,可以通过 accept() 函数来接收客户端请求。它的原型为:
  int accept(int sock, struct sockaddr *addr, socklen_t *addrlen);  //Linux
  SOCKET accept(SOCKET sock, struct sockaddr *addr, int *addrlen);  //Windows
  它的参数与 listen() 和 connect() 是相同的:sock 为服务器端套接字,addr 为 sockaddr_in 结构体变量,addrlen 为参数 addr 的长度,可由 sizeof() 求得。
 
  accept() 返回一个新的套接字来和客户端通信,addr 保存了客户端的IP地址和端口号,而 sock 是服务器端的套接字,大家注意区分。后面和客户端通信时,要使用这个新生成的套接字,而不是原来服务器端的套接字。
 
  最后需要说明的是:listen() 只是让套接字进入监听状态,并没有真正接收客户端请求,listen() 后面的代码会继续执行,直到遇到 accept()。accept() 会阻塞程序执行(后面代码不能被执行),直到有新的请求到来。
listen和accept函数 使套接字进入监听状态并响应客户端请求

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读