`

mono,.net,异步socket

    博客分类:
  • C#
阅读更多

.net的异步 socket有两种形式

 

1,和其他async io类似的 iasyncresult

 

2,3.5后新增的socketasyncargs。。

 

据msdn说 第二种的性能有极大的提高。。我简单测试过。。在 accept socket这里,,速度是很快,大约为前者的3-4倍

 

测试环境 win xp sp3

前者 1秒钟大约能accept 500个socket

 

后者 可以达到 2000个。。

 

在处理数据收发 方面 两者的开销差不多,没有表现出特别明显的差异。。。

 

但是在mono上就不是这么一回事了。。。mono 2.6.x后也多了一个 socketasyncargs的实现。但是文档是没有的。。iasyncresult 有文档。。描述和msdn大致上差不多。。。

 

在mail-list上有人提过mono上的socketasyncargs是用thread来对应每一个请求性能很低 云云。。再进一步的资料就没有了,于是决定一试

 

测试环境 ubuntu 9.10 desktop.. mono是从svn下的。2.8 preview的版本。

 

默认的 ulimit -n 是 1024.。

 

iasyncresult 可以连接到1019.。然后报描述符溢出。。正常

 

socketasyncargs 只能连接到501 左右。。

 

修改 ulimit -n 到 12000。。测试 10000个 长连接

 

iasyncresult 可以正常工作。。 socketasyncargs 在连接到8601的时候 直接退出 报了一个assert 声明。。具体是什么没看。

 

由此推断。。socketasyncargs在mono上 没有使用到epoll,实现上也存在问题。。。

 

我看过 ice 3.4.1的代码,.net版本依然 还是使用 iasyncresult 并没有因为 socketasyncargs高效而替代。我想很有可能是为了兼容mono的原因。。。

 

如果要写一个跨平台的基于.net async socket server 建议还是使用 iasyncresult。。。

分享到:
评论

相关推荐

    TCP异步Socket经典例子C# .Net

    本文将深入探讨C# .NET环境下如何利用异步Socket实现高效、可扩展的服务器与客户端通信。 首先,TCP是一种面向连接的、可靠的传输层协议,它通过三次握手建立连接,并确保数据的有序、无丢失传输。异步Socket编程则...

    开源C# SOCKET服务器,支持WINDOWS云,LIUNX MONO 2.0

    SuperSocket 是一个轻量级的,可扩展的,跨平台的.NET Socket 服务器开发框架,可用来构建一个基于命令的服务器端Socket 程序,而无需了解如何使用Socket,如何维护Socket连接,亦无需了解Socket是如何工作的。...

    AchiSocket:.NET Standard(.NET Core,Mono,.Net Framework)的快速,异步和事件驱动套接字通信

    它是异步的,由事件驱动,并自动处理重新连接和保持活动状态。 用法 创建服务器 var server = new AchaServer(5900); server.StartListening(socket => { Console.WriteLine("Client connected"); socket....

    dotnet-SuperSocket是一个轻量级跨平台和可扩展socket服务器应用程序框架

    1. **跨平台性**:SuperSocket基于.NET Standard库,可以无缝地在各种.NET环境中运行,包括.NET Framework、.NET Core以及 Mono。 2. **可扩展性**:SuperSocket提供了一套完整的插件系统,允许开发者根据需求定制...

    Wrox.Professional.Android.Programming.with.Mono.for.Android.and.NET.C#.2012

    《Wrox.Professional.Android.Programming.with.Mono.for.Android.and.NET.C#.2012》是一本专注于使用Mono for Android和.NET C#进行Android应用程序开发的专业书籍。这本书旨在帮助开发者利用C#的强大功能和.NET ...

    微软开源的SignalR .Net客户端实现ASP.NET SignalR.zip

    SignalR Hub AuthorizationSecuring SignalR to your site’s usersScaling SignalR with RedisRunning SignalR on MonoUsing SignalR in MonoTouch and Mono for Android Apps SignalR really changes ...

    SuperSocket(1.6.4).Binaries客户端和服务端通信框架

    4. **多平台支持**:虽然主要基于.NET Framework,但SuperSocket也能通过Mono项目运行在非Windows平台上,如Linux和Mac OS。 5. **强大的日志系统**:内置的日志模块可以帮助开发者调试和监控网络通信过程。 6. **...

    SuperSocketDemo:一个基于WPF + SuperSocket的TCP长连接小示例 实现心跳检测、断线重连、解决TCP粘包问题

    SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,我们可以有更多的时间用在业务逻辑上,SuperSocket有效的...

    .net做的类似QQ的聊天程序

    此外,考虑跨平台兼容性,可以利用.NET Core或Mono实现跨平台部署。 8. **性能优化**:为了应对大量并发连接,可能需要采用负载均衡、消息队列等技术。同时,合理的数据结构和算法选择也能有效提升程序性能。 9. *...

    visual c#.net网络核心编程

    C#的Mono项目和.NET Core使得C#程序能够在Windows之外的平台上运行,包括Linux和MacOS,这极大地扩展了C#网络应用的适用范围。 总的来说,《Visual C#.NET网络核心编程》这本书会详细讲解以上各个方面的知识,帮助...

    netcode中文提示20190820.zip

    1. **.NET Framework网络编程基础**:介绍如何使用.NET Framework进行网络编程,包括Socket类的使用,TCP和UDP通信的基本原理,以及异步编程模型在处理网络请求时的应用。 2. **.NET Standard**:详细讲解.NET ...

    C#聊天软件

    随着跨平台需求的增长,C#聊天软件可能需要借助.NET Core或Mono运行时实现Windows、MacOS、Linux等不同操作系统上的运行。 总结来说,【C#聊天软件】的开发涵盖了C#语言、网络编程、数据库操作、UI设计、多线程处理...

    HslCommunication-master.zip

    6. **跨平台支持**:作为一款跨平台的通信库,HslCommunication可能使用了.NET Core或Mono来实现对不同操作系统的支持。了解.NET跨平台开发的基本概念,以及如何在不同平台上部署和运行.NET程序,对于扩大应用范围...

    C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    WebSocket Sharp设计为一个单一的dll文件,便于集成到.NET Framework 3.5及以上版本(包括兼容环境如Mono)的项目中。 对于Unity开发者,WebSocket Sharp同样适用,但需要注意Unity的特定平台限制,如Webplayer和...

    RRQMSocket网络通信框架-.net

    在发送效率上,同步发送可达20w/s,异步发送可达60w/s。服务器在接收、处理效率上因线程数量而定。 支持环境: .NETFramework4.5及以上。 .NETCore3.1及以上。 .NETStandard2.0及以上。 支持框架: WPF Winform ...

    linux内核研究与探索

    同时,ASP.NET、C#等微软技术在Linux环境下的应用,如通过Mono框架运行.NET应用,也是跨平台开发的知识点。 XML作为一种数据交换格式,在配置文件、数据存储等方面广泛应用。理解XML的语法和解析机制,可以更好地...

    SuperWebSocket源码

    1. **跨平台**:由于是基于.NET Framework构建的,SuperWebSocket可以在Windows、Linux和Mac OS等操作系统上运行,这得益于Mono项目的支持。 2. **高性能**:SuperWebSocket采用了异步I/O模型,能够处理大量并发连接...

    某C#高人写的远程控制软件源代码

    8. **多平台支持**:虽然C#主要应用于Windows,但通过.NET Core或Mono,可以跨平台运行。如果源代码考虑了跨平台,那么会涉及到不同操作系统API的适配。 总之,这份源代码提供了深入了解C#编程、网络编程和远程控制...

    nightfall-gateway-server:网关服务器,它将NightFall Client发送的请求转发到身份验证服务器

    - **网络通信**:C#的System.Net命名空间提供了丰富的网络通信类,如Socket和TcpClient,用于建立客户端和服务器间的连接,传输数据。 - **多线程**:为了处理并发请求,网关服务器可能需要利用C#的线程或异步编程...

Global site tag (gtag.js) - Google Analytics