网络编程中listen()是否在调用后就一直监听,即使接受了其中一个连接,依然监听其他套接字

listen()的寿命多长,即假如listen()是主线程最后代码,有其他线程处理accept和recv,那该进程是一直监听下去吗(并不是阻塞,而是像未完成代码一样让主线... listen()的寿命多长,即假如listen()是主线程最后代码,有其他线程处理accept和recv,那该进程是一直监听下去吗(并不是阻塞,而是像未完成代码一样让主线程无法结束),还是监听到一个连接并在子线程完成就过了listen()结束主线程
.求各位大神解惑啊
展开
 我来答
ysdoc
2012-08-16 · TA获得超过746个赞
知道小有建树答主
回答量:586
采纳率:60%
帮助的人:404万
展开全部
listen函数的第一个参数是SOCKET类型的,该函数的作用是在这个SOCKET句柄上建立监听,至于有没有客户端连接进来,那就需要用accept函数去进行检查了,accept函数的第一个参数也是SOCKET类型,跟listen函数是同一个socket句柄,所以一般accept都是放在一个线程中不停的调用,因为你不知道什么时候会有客户连接进行来。
更多追问追答
追问
那为什么书上说aceept()函数返回一个新的套接字来接受数据,原来的套接字继续监听
追答
书上说的没错,你这样理解吧listen的socket对象你把它理解成火车站,aceept的socket对象你把他理解成你要接的旅客。你要接到旅客,首先你要到火车站去等待(即listen的socket对象),旅客有没有到,你要不停的在出口处查看有没有你等待的旅客(即aceept在检查到新连接产生的socket对象),接到旅客后你想对旅客说我爱你,这时你应该对旅客(aceept在检查到新连接产生的socket对象)说,而不是对火车站(listen的socket对象)说。
百度网友9b0190e03
2012-08-21 · 超过18用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:56.4万
展开全部
listen通俗理解就是打开端口 让端口一直被打开 然后用accpet去监视。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式