开发者社区> 问答> 正文

为什么客户端连续向服务器发起多次请求不会爆本地端口被耗尽? 400 请求报错 

 大家写过socket程序都应该知道,短时间内向服务器发送多次请求,本地端口会被耗尽,原因是很多端口还没来得及释放;为什么http 没有这个问题呢? (我们知道HTTP是TCP之上的一层协议)

展开
收起
kun坤 2020-05-29 22:48:17 827 0
1 条回答
写回答
取消 提交回答
  • 从表面上看 socket程序是你写的, http客户端是浏览器开放商写的, 两者的技术水平还是有差距的   内部原因,请听楼下解释   ######你说了等于没说,哎######+1######Web浏览器一般会用申请保持连接的,关键点在http header中的keep-alive。######@爱国者 : 你网上搜一下http header的说明或文档。######能否具体一点######因为http是短连接,用完就断开了######我的socket程序也是短连接,用完就断开,但是断口来不及释放######服务器端只用了一个端口啊,80!

    ######socket也是连到服务器端的一个端口######浏览器可以重复使用已经占用的端口啊,你自己netstat看看是什么情况

    ######浏览器是可以申请长连接的,一般最多只会有10个连接并发(和css,js,内容,图片这些有关系),所以肯定不会出现本地端口耗尽的现象######一个连接的 tcp socket 描述符代表一条 tcp 连接, 一条 tcp 连接不止由本地的 ip 和本地端口决定,一条 tcp 连接是由 本地 ip、本地端口、对方 ip 、对方端口共同决定的,在本地可以存在具有同样的本地 ip 和本地端口的 socket ,只要对方的 ip 或者端口不一样就行(许多基于 tcp 的服务器就是这种情况,包括 http),理论上讲只要四个元素(本地 ip、本地端口、对方 ip 、对方端口)中 有一个不同,就可以存在无数个 tcp 连接, 不过操作系统可能对 tcp 连接的数目有限制。

    ######http://msdn.microsoft.com/zh-cn/library/aa560610(v=bts.10).aspx 避免TCP/IP 端口耗尽的方法

    2020-05-30 14:00:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
ECS块存储产品全面解析 立即下载
同程旅游ECS弹性计算 立即下载
神龙云服务器产品及技术深度解析 立即下载