.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。。。
相关推荐
本文将深入探讨C# .NET环境下如何利用异步Socket实现高效、可扩展的服务器与客户端通信。 首先,TCP是一种面向连接的、可靠的传输层协议,它通过三次握手建立连接,并确保数据的有序、无丢失传输。异步Socket编程则...
SuperSocket 是一个轻量级的,可扩展的,跨平台的.NET Socket 服务器开发框架,可用来构建一个基于命令的服务器端Socket 程序,而无需了解如何使用Socket,如何维护Socket连接,亦无需了解Socket是如何工作的。...
它是异步的,由事件驱动,并自动处理重新连接和保持活动状态。 用法 创建服务器 var server = new AchaServer(5900); server.StartListening(socket => { Console.WriteLine("Client connected"); 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》是一本专注于使用Mono for Android和.NET C#进行Android应用程序开发的专业书籍。这本书旨在帮助开发者利用C#的强大功能和.NET ...
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 ...
4. **多平台支持**:虽然主要基于.NET Framework,但SuperSocket也能通过Mono项目运行在非Windows平台上,如Linux和Mac OS。 5. **强大的日志系统**:内置的日志模块可以帮助开发者调试和监控网络通信过程。 6. **...
SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架。你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket 如何工作,我们可以有更多的时间用在业务逻辑上,SuperSocket有效的...
此外,考虑跨平台兼容性,可以利用.NET Core或Mono实现跨平台部署。 8. **性能优化**:为了应对大量并发连接,可能需要采用负载均衡、消息队列等技术。同时,合理的数据结构和算法选择也能有效提升程序性能。 9. *...
C#的Mono项目和.NET Core使得C#程序能够在Windows之外的平台上运行,包括Linux和MacOS,这极大地扩展了C#网络应用的适用范围。 总的来说,《Visual C#.NET网络核心编程》这本书会详细讲解以上各个方面的知识,帮助...
1. **.NET Framework网络编程基础**:介绍如何使用.NET Framework进行网络编程,包括Socket类的使用,TCP和UDP通信的基本原理,以及异步编程模型在处理网络请求时的应用。 2. **.NET Standard**:详细讲解.NET ...
随着跨平台需求的增长,C#聊天软件可能需要借助.NET Core或Mono运行时实现Windows、MacOS、Linux等不同操作系统上的运行。 总结来说,【C#聊天软件】的开发涵盖了C#语言、网络编程、数据库操作、UI设计、多线程处理...
6. **跨平台支持**:作为一款跨平台的通信库,HslCommunication可能使用了.NET Core或Mono来实现对不同操作系统的支持。了解.NET跨平台开发的基本概念,以及如何在不同平台上部署和运行.NET程序,对于扩大应用范围...
WebSocket Sharp设计为一个单一的dll文件,便于集成到.NET Framework 3.5及以上版本(包括兼容环境如Mono)的项目中。 对于Unity开发者,WebSocket Sharp同样适用,但需要注意Unity的特定平台限制,如Webplayer和...
在发送效率上,同步发送可达20w/s,异步发送可达60w/s。服务器在接收、处理效率上因线程数量而定。 支持环境: .NETFramework4.5及以上。 .NETCore3.1及以上。 .NETStandard2.0及以上。 支持框架: WPF Winform ...
同时,ASP.NET、C#等微软技术在Linux环境下的应用,如通过Mono框架运行.NET应用,也是跨平台开发的知识点。 XML作为一种数据交换格式,在配置文件、数据存储等方面广泛应用。理解XML的语法和解析机制,可以更好地...
1. **跨平台**:由于是基于.NET Framework构建的,SuperWebSocket可以在Windows、Linux和Mac OS等操作系统上运行,这得益于Mono项目的支持。 2. **高性能**:SuperWebSocket采用了异步I/O模型,能够处理大量并发连接...
8. **多平台支持**:虽然C#主要应用于Windows,但通过.NET Core或Mono,可以跨平台运行。如果源代码考虑了跨平台,那么会涉及到不同操作系统API的适配。 总之,这份源代码提供了深入了解C#编程、网络编程和远程控制...
- **网络通信**:C#的System.Net命名空间提供了丰富的网络通信类,如Socket和TcpClient,用于建立客户端和服务器间的连接,传输数据。 - **多线程**:为了处理并发请求,网关服务器可能需要利用C#的线程或异步编程...