永发信息网

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

答案:2  悬赏:50  手机版
解决时间 2021-01-27 12:31
网络编程中listen()是否在调用后就一直监听,即使接受了其中一个连接,依然监听其他套接字
最佳答案
listen函数的第一个参数是SOCKET类型的,该函数的作用是在这个SOCKET句柄上建立监听,至于有没有客户端连接进来,那就需要用accept函数去进行检查了,accept函数的第一个参数也是SOCKET类型,跟listen函数是同一个socket句柄,所以一般accept都是放在一个线程中不停的调用,因为你不知道什么时候会有客户连接进行来。追问那为什么书上说aceept()函数返回一个新的套接字来接受数据,原来的套接字继续监听追答书上说的没错,你这样理解吧listen的socket对象你把它理解成火车站,aceept的socket对象你把他理解成你要接的旅客。你要接到旅客,首先你要到火车站去等待(即listen的socket对象),旅客有没有到,你要不停的在出口处查看有没有你等待的旅客(即aceept在检查到新连接产生的socket对象),接到旅客后你想对旅客说我爱你,这时你应该对旅客(aceept在检查到新连接产生的socket对象)说,而不是对火车站(listen的socket对象)说。追问我的表达能力挺差的,其实我追问一下还是想问listen()寿命是多少,就像你的例子你在火车站等旅客,总不能一直等下去(那样主函数怎么结束),没旅客的时候吗?那谁又决定什么时候没旅客,是当对方断开链接决定的吗?那又有疑问了,前一个连接结束了却在listen()处理下一个连接时让其结束吗?归根结底就是listen()的寿命追答listen的寿命就是服务器的寿命,listen的socket销毁(即火车站被销毁),服务器与客户端就完全断开连接(去接旅客的人和乘火车来的人都会无法见面),是否有旅客要靠不停循环的去检测,为了不阻塞主线程,检测的函数 (即accept)要放在线程中。至于accept是怎么检测到连接的,那是tcp/ip协议实现的。
全部回答
listen通俗理解就是打开端口 让端口一直被打开 然后用accpet去监视。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金华市区哪里有学功夫的地方。我是上班族,非
九州镇芒店小学怎么去啊,我要去那办事
现在在三亚,我不是本地的想考驾照?大概多久
什么的天气
亡国奴的意思是什么啊?知道的请说下!
用支付宝还信用卡要手续费吗
廊坊市广阳区万庄镇草厂小学地址在什么地方,
从绿色化学的理念出发,下列实验不宜用右图所
DNF机械元首选什么首饰好
我的P4连接不上电脑,电脑上一点显示都没有,
肖家务小学地址在什么地方,我要处理点事
宁波到桐乡汽车票价
【我国第一部词典】我国第一部字典()的作者是
被诏的意思是什么啊?知道的请说下!
什么地方能玩手机网络电玩城
推荐资讯
新形象工作室地址在什么地方,想过去办事
梦幻西游BB攻修从0点到5需要多少个修炼果?
中国邮政储蓄银行(飞云路支行)地址有知道的么
轰天烈地的意思是什么啊?知道的请说下!
酒店管理学费是多少
超音速队游泳健身中心地址在什么地方,我要处
网上女生说呵呵是什么意思?
求教个Excel问题,怎么通过判断条件来发出声
德润汽车地址在什么地方,想过去办事
日记形式的作文
男友每天晚上都说晚安!哎,我想无理取闹,他
杭锦旗独贵塔拉派出所怎么去啊,我要去那办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?