当前位置:  开发笔记 > 编程语言 > 正文

使用.NET创建100,000个TCP连接

如何解决《使用.NET创建100,000个TCP连接》经验,为你挑选了0个好方法。

我写在C#中的小彗星服务器,并测试它,我已经写打开一堆连接的一个小程序,写一点文字,他们每个人,然后关闭它们:

int basePort = 30000;
IPAddress localAddress = new IPAddress( new byte[] { 127, 0, 0, 1 } );
List sockets = new List();

for( int i = 0; i < 20000; i++ ) {
    Socket s = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
    s.Bind( new IPEndPoint( localAddress, basePort + i ) );
    s.Connect( "localhost", 1999 );
    sockets.Add( s );
}

string message = "hello";
byte[] messageData = Encoding.ASCII.GetBytes( message );
foreach( Socket s in sockets ) {
    s.Send( messageData );
}

foreach( Socket s in sockets ) {
    s.Disconnect( false );
}

我目前正在使用Windows XP,它只分配1025到5000范围内的动态客户端端口,所以我已经添加了显式绑定到从30000开始的端口.这使我从4000以下连接到16000多一点,但现在我在Socket.Connect上遇到以下异常:

"无法执行套接字上的操作,因为系统缺少足够的缓冲区空间或因为队列已满127.0.0.1:1999"

有什么想法吗?更改发送和接收缓冲区大小似乎没有任何区别,它似乎总是我的客户端应用程序打破,从来没有我的服务器.我意识到在达到100,000个连接之前我将耗尽客户端端口,但我仍然想要了解更好的情况.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有