小编a_m*_*a_m的帖子

Windows 对每台机器同时打开的套接字/连接数的限制

假设我有一个带有一个真实网络接口和几个环回接口的 Windows 7。我有启用 IOCP 的服务器,它接受来自客户端的连接。我正在尝试尽可能多地模拟与服务器的真实客户端连接。

我的客户端代码只是建立 X 数量的套接字连接(注意客户端绑定到给定的接口):

        const Int32 remotePort = 12345;
        const Int32 MaxSockets = 60000;

        Socket[] s = new Socket[MaxSockets];
        IPEndPoint bindEndpoint = new IPEndPoint(IPAddress.Parse(args[0]), 0);
        for (Int32 i = 0; i < MaxSockets; i++)
        {
            s[i] = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s[i].SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            s[i].Bind(bindEndpoint);
            s[i].Connect(args[1], remotePort);

            IPEndPoint socketInfo = (IPEndPoint)s[i].LocalEndPoint;
            Console.WriteLine(String.Format("Connected socket {0} {1} : {2}", i, socketInfo.Address, socketInfo.Port));
        }
Run Code Online (Sandbox Code Playgroud)

在环回接口上,我有几个用于绑定的 IP。另外,我也是用真实的接口来绑定的。当每台机器打开的套接字数量约为 64K 时,我遇到了一个问题:

未处理的异常:System.Net.Sockets.SocketException:无法对套接字执行操作,因为系统缺少足够的缓冲区空间或队列已满

我已经尝试了一些无助的事情,例如: - 将 MaxUserPort 设置为最大值以及注册表中的一些其他推荐的 TCPIP 设置。- 尝试在不同的接口(真实接口和环回)上运行两个服务器并使用多个客户端。

它是 Windows …

sockets windows networking iocp

7
推荐指数
1
解决办法
2万
查看次数

Visual Studio 2010/2012:在断点处停止调试时,调试过程挂起并且不可用

发生在一些场合.使用Visual Studio 2012 Professional运行Windows 8 x64(在VS 2010中也曾发生过).正在使用"启用本机代码调试"调试C#控制台项目.

按F5,调试一些代码,到达断点等,然后按Shift + F5(停止调试),Visual Studio不会像往常一样返回编辑模式,只是挂起一段时间,然后提供终止挂起操作的选项(对话框窗口"远程操作花费的时间比预期的要长",带有进度条和终止按钮).如果我没有点击终止,它只会更新进度条.如果我单击以终止操作,VS将返回可编辑模式,但调试过程仍在任务管理器中可见,并且不可用.这个挂起的调试过程会锁定它使用的某些文件(例如DLL),因此无法进一步重建.杀死此过程的唯一方法是重新启动计算机.

有趣的是,在调试代码中达到断点并逐步执行调试时会发生这种情况.如果我只运行没有断点的调试过程,则不会发生挂起.

以下主题中的解决方案没有帮助:https://connect.microsoft.com/VisualStudio/feedback/details/504538/

c# debugging visual-studio-2010 visual-studio visual-studio-2012

5
推荐指数
1
解决办法
2951
查看次数