11 2011 档案
摘要:之前已经简单的测试了c# socket的数据吞吐处理能力,结果虽然比较理想;但以这样的数据包处理量在某些场景下是远远不够用的,在某些应用场景中每秒要处理的数据包不是1,2W个可能几W,上10W或更多的数据包吞吐。在一个游戏场景中同场景存在100用户,每个用户的变更都会通知其他199的用户,如果每个用户平均每秒变更3次,那服务端每秒接收转发的数据包就是100x100x3=3w个。如果是200个用户同场景,那所每秒所面对的处理包会是200x200x3=12W个,想c# socket提供这么密集的IO处理是不太可能的事情,即使是可以那也要很不错的硬件支撑。 从软件上去解决这问题那只能选择减少I...
阅读全文
摘要:前段时间讲述了在编写一个高性能的Socket Tcp服务要注意的细节[c#编写高性能Tcp Socket应用注意事项];按那些细节描述的方法来实现一个Socket Tcp性能到底达到一个怎样的效果呢?以下是针对相关方法实现的Socket Tcp服务进行一个测试,看一下在那种方式编写的Socket Tcp达到一个怎样的性能指标。测试环境server:Core2 4300 1.8G 2G内存 win2003client1:Core i7 Q740 1.7G 4G内存 win 764client2:P4 2.4G 1G内存 WIN2003由于I7 Q740装的是win7 系统所以没有拿来做服务器端。
阅读全文
摘要:以下是在实现一个高性能Socket组件总结下来的问题,如果你只需要处理几千的并发应用那代码编写上注意一下就行了,但需要面对上万或几万的并发应用.那以下问题的总结,相信对编写这方面的应用有很大的帮助.SocketAsyncEventArgs这个对象是.net 2.0 sp1后提供的,主要用于实现高性能Socket数据发送和接收处理(对于更详细的介绍可以到MSDN上了解).该对象提供了三个方法设置相关发送和接收的缓冲区,SetBuffer(Int32, Int32),SetBuffer(Byte(), Int32, Int32),BufferList,前两者不能和后者共存(MSDN上有说明原因..
阅读全文
摘要:在之前的文章讲术了如何设计一个简单的网络缓冲区和缓冲池,在.net网络应用中有一个普遍的问题就是如何把对象写入缓冲和从缓冲中读取数据还原对象.在这里会实现一个Writer和Reader方便地把信息写入缓冲区和从缓冲区读取;先看下Writer和Reader功能.BufferWriterView Code public class BufferWriter : IDisposable { private IList<Buffer> mBuffers = new List<Buffer>(20); public IList<Buffer> Buffers ...
阅读全文

浙公网安备 33010602011771号