windows socket最大连接数问题

g_h01 2013-01-16 11:55:26
看一篇文章,提到socket 的类型是word,判定这个连接理论峰值是65535。 那么可不可以开多个进程,令一台电脑上的连接数增加?
就是那个峰值65535是所有进程加起来的峰值,还是一个进程里最大的峰值?
对于socket编程有些细节还是不太理解,希望大家讲解一下。
...全文
3025 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishuoquan 2015-04-24
  • 打赏
  • 举报
回复
应用场景实测,单个应用程序,可接受的连接至少10万以上。从netstat /an查看结果是,当IP不同时,端口是可以相同的。 但做为客户端连出时,我没有试过超6万的,因为没有应用场景,只能写测试程序,但两台服务器之间因为ip相同,所以端口65535用完就创建socket失败了。
dint 2015-01-30
  • 打赏
  • 举报
回复
Socket和线程有毛线的关系
caozhimeng 2014-07-08
  • 打赏
  • 举报
回复
虽然没看明白,但是学习了
jiaoshiyao 2014-03-12
  • 打赏
  • 举报
回复
引用 2 楼 gpshq 的回复:
可用端口数就只有 65535个,你开多少个socket也只能同时有这么多连接,理论上。
使用UDP共享使用一个端口 在发送的数据上加上一个ClientKey区分哪个客户端的请求 这样行不???
easydw 2013-10-27
  • 打赏
  • 举报
回复
那些自认为能超过65535的,请拿出证据来说话,亲手写个程序证明一下, 不要只是靠所谓理论辩解!! (备注:在平常面试中,常发现类似"牛人",动不动说自己写的监控程序能几十万个并发连接,并且每个连接用一个线程管理, 艹, 真是当别人都是傻子啊! 顺带问大家一个问题: 一个32位的程序,最大能创建多少个线程? 自己动手试试再回答啊!!!!)
氰客 2013-03-14
  • 打赏
  • 举报
回复
引用 18 楼 shigaofei1 的回复:
引用 15 楼 gpshq 的回复:引用 14 楼 shigaofei1 的回复:引用 11 楼 gpshq 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能……
谢大哥指教,是我脑壳进水了。 仔细查了一下资料,稍微总结一下 TCP协议里面是用[源IP+源Port+目的IP+目的 Port]来区别两个不同连接, 所以连入和连出是两个不同的概念 连出Connect就不错了,需要生成随机端口,这个是有限的 连入的话, 因SOCKET的分配受内存分页限制,而连接受限制(WINDOWS)。而Linux受单一进程同时可打开文件数量的限制,创建的socket句柄有限,而连接受限。
nice_cxf 2013-03-14
  • 打赏
  • 举报
回复
一个是文件句柄,一个是端口,分明是两个东西,非要搞到一起,你们写过连接多的网络程序没有啊?
mrsupersky 2013-03-14
  • 打赏
  • 举报
回复
引用 15 楼 gpshq 的回复:
引用 14 楼 shigaofei1 的回复:引用 11 楼 gpshq 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 ……
顺便告诉你,有必要的话,在WindowsServer2000以上的WindowsServer版本中都可以绕开TCP/IP 协议栈。。。
mrsupersky 2013-03-14
  • 打赏
  • 举报
回复
引用 15 楼 gpshq 的回复:
引用 14 楼 shigaofei1 的回复:引用 11 楼 gpshq 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 ……
三次握手,和TCP对大连接数有关系么。。。
mrsupersky 2013-03-14
  • 打赏
  • 举报
回复
引用 15 楼 gpshq 的回复:
引用 14 楼 shigaofei1 的回复:引用 11 楼 gpshq 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 ……
引用 16 楼 gpshq 的回复:
引用 13 楼 shigaofei1 的回复:引用 12 楼 zhao4zhong1 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。……
你脑子掉沟里了么。。。 LISTENING和ESTABLISHED 还用看么。。。。 字面解释都可以说清楚了。。。神经病啊你,老是重复这个问题。。。 好像你很懂,你做过高并发的ICOP么。。。。 你觉得TCP/IP连接超不过65535? 切。。。。
氰客 2013-03-12
  • 打赏
  • 举报
回复
引用 7 楼 shigaofei1 的回复:
理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。
bind, listen, accept,你能告诉我后面两个步骤在做什么么?
引用 8 楼 jinghai1776 的回复:
shigaofei1 说得对,一个端口也能支持多个连接。连接其实就是一种登记。连接上意味着 server 承认此 client 是其固定通信伙伴。server 根据自己对特定功能的处理能力来确定允许多少连接。
多看看TCP/IP原理
大智_Unity玩家 2013-03-12
  • 打赏
  • 举报
回复
引用 7 楼 shigaofei1 的回复:
理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。
如果不accept我无话可说
AnYidan 2013-03-12
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
引用 1 楼 zilaishuichina 的回复: 所有进程加起来的 言简意赅
++
忘世麒麟 2013-03-12
  • 打赏
  • 举报
回复
引用 5 楼 gpshq 的回复:
引用 4 楼 g_h01 的回复:引用 2 楼 gpshq 的回复: 可用端口数就只有 65535个,你开多少个socket也只能同时有这么多连接,理论上。 如果改变到64位操作系统,这个连接数会不会增加? TCP/IP 协议规定的,只用了2个字节表示端口号。
++
氰客 2013-03-12
  • 打赏
  • 举报
回复
引用 13 楼 shigaofei1 的回复:
引用 12 楼 zhao4zhong1 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 netstat -na 你想说明……
正巧,您应该看看。什么是LISTENING,什么是 ESTABLISHED
氰客 2013-03-12
  • 打赏
  • 举报
回复
引用 14 楼 shigaofei1 的回复:
引用 11 楼 gpshq 的回复:引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 bind, listen, accept,你能……
你知道tcp三次握手干了什么事么?
静_海 2013-03-12
  • 打赏
  • 举报
回复
shigaofei1 说得对,一个端口也能支持多个连接。连接其实就是一种登记。连接上意味着 server 承认此 client 是其固定通信伙伴。server 根据自己对特定功能的处理能力来确定允许多少连接。
mrsupersky 2013-03-12
  • 打赏
  • 举报
回复
引用 11 楼 gpshq 的回复:
引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 bind, listen, accept,你能告诉我后面两个步骤在做什么么? ……
65535这个数字只决定了,服务器端可以拥有多少个Bind的Socket,也就是说,你可以开几万个服务器程序, 但是你要知道。。。。这个能够连接客户端的数量没有任何关系。。。。, Accept过来的Socket是不需要Bind任何IP地址的,也没有端口占用这一说。。。 作为Server端的Socket本身只负责倾听。和接受操作。。。。如果用Accept那就是由系统构造Socket。但是也可以用AcceptEx。。。。 (我这里只说的是Windows网络编程。。。)
mrsupersky 2013-03-12
  • 打赏
  • 举报
回复
引用 12 楼 zhao4zhong1 的回复:
引用 7 楼 shigaofei1 的回复:理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。 netstat -na
你想说明什么问题? 客户端要连接同一个服务器的确需要,使用不同的端口。 但是服务器端使用只有一个。。。。 你仔细看看 netstat -na 出来的结果。。。
mrsupersky 2013-03-12
  • 打赏
  • 举报
回复
理论上是无限的,实际上 看情况, 至于 那个连接数 由于端口最大数被限制在65535之内的说法简直是荒谬。 服务器端的一个Socket Bind的时候只有一个端口,无论有多少连接进来,只占用一个端口。 和能够承受多少连接毫无关系。。。
加载更多回复(7)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧