nmgwddj 发表于 2014-2-4 14:17:19

Windows Socket 句柄数限制是多少?请教。

长久以来一直在郁闷一个问题,我有个服务端程序,之前因为Socket句柄泄露,没有释放导致系统无法浏览网页,但远程、ping外网什么的都通,后台修正程序后不再出现类似问题了。
今天闲的蛋疼,就想找找Windows Socket到底限制到多少。下面是示例程序(连接的IP要有程序在监听80端口,否则不起作用),将程序中的$nSocket内容改大一点在电脑上运行后,会出现无法打开网页的情况。


#include <File.au3>

Local $g_IP = "192.168.3.5"
TCPStartup()

$nSocket = 3100

For $i = 1 To $nSocket
        Local $socket = TCPConnect($g_IP, 80)
Next

RunWait(@ComSpec & ' /c "' & @ScriptDir & '\Handle.exe" -a >c:\1.txt')

$hOpen = FileOpen('C:\1.txt')
$str = FileRead($hOpen)
$strR = StringRegExp($str, '\\Device\\Afd|\\Device\\Tcp', 3)
FileClose($hOpen)

ShellExecute('C:\Program Files\Internet Explorer\IEXPLORE.EXE')
MsgBox(0, 'Tcp | Afd 总数=' & UBound($strR) - 1, '创建 ' & $nSocket & ' 个连接完成!')



Handle.exe在这里下载,放到程序目录下,运行上面代码就可以了。
当程序一次性创建N个连接后,就会出现无法打开网页的情况,但具体系统限制多少个Socket连接就不是很清楚了,有人熟悉这方面问题吗?

58fly 发表于 2014-2-13 05:27:15

嗯,以前写托管检测的时候,由于一个BUG导致,无限建立连接,后来用工具才查到原因..{:face (319):}

没记错的话是65633
页: [1]
查看完整版本: Windows Socket 句柄数限制是多少?请教。