• 大小: 38KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: SocketAsyncE  SOCKET  IOCP  

资源简介

SocketAsyncEventArgs 单机测试成功突破 6W,59999 还是 100%连接上去的 所以估计最高性能可能达到10W以上 值得说明的是 建议使用 SocketAsyncEventArgs 进行监听的 读取数据包. 因为 这2个地方的 SocketAsyncEventArgs 是同一个,并且内存和 SocketAsyncEventArgs 对象都好回收 好控制 如果使用 SocketAsyncEventArgs 发送数据包那么 SocketAsyncEventArgs 就不好控制了 所以使用传统的异步模式比较好. 而数据包传出使用 异步代理 进行传出以免堵塞 SocketAsyncEventArgs 线程. MSND 的 SocketAsyncEventArgs 除了SocketAsyncEventArgsPOOL 和内存Manager 其他纯属扯淡.最好别效仿.

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;

namespace ZYSocketSuper
{
    internal sealed class BufferManager
    {
        private Byte[] buffer;
        private Int32 bufferSize;
        private Int32 numSize;
        private Int32 currentIndex;
        private Stack freeIndexPool;

        public BufferManager(Int32 numsize Int32 buffersize)
        {
            this.numSize = numsize;
            this.bufferSize = buffersize;
           
        }

        public void Inint()
        {
            buffer = new byte[numSize];
            freeIndexPool = new Stack(numSize / bufferSize);
        }

        internal void FreeBuffer(SocketAsyncEventArgs args)
        {
            freeIndexPool.Push(args.Offset);
            args.SetBuffer(null 0 0);
        }

        internal Boolean SetBuffer(SocketAsyncEventArgs args)
        {
            if (this.freeIndexPool.Count > 0)
            {
                args.SetBuffer(this.buffer this.freeIndexPool.Pop() this.bufferSize);
            }
            else
            {
                if ((this.numSize - this.bufferSize) < this.currentIndex)
                {
                    return false;
                }
                args.SetBuffer(this.buffer this.currentIndex this.bufferSize);
                this.currentIndex += this.bufferSize;
            }
            return true;
        }
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      13312  2009-12-26 14:04  ZYSocketSuper\bin\Debug\ZYSocketSuper.exe

     文件      34304  2009-12-26 14:04  ZYSocketSuper\bin\Debug\ZYSocketSuper.pdb

     文件      14328  2009-12-26 14:04  ZYSocketSuper\bin\Debug\ZYSocketSuper.vshost.exe

     文件        490  2009-06-11 05:14  ZYSocketSuper\bin\Debug\ZYSocketSuper.vshost.exe.manifest

     文件       1514  2009-12-26 00:15  ZYSocketSuper\BufferManager.cs

     文件        358  2009-12-26 14:04  ZYSocketSuper\obj\Debug\ZYSocketSuper.csproj.FileListAbsolute.txt

     文件      13312  2009-12-26 14:04  ZYSocketSuper\obj\Debug\ZYSocketSuper.exe

     文件      34304  2009-12-26 14:04  ZYSocketSuper\obj\Debug\ZYSocketSuper.pdb

     文件       2435  2009-12-26 13:41  ZYSocketSuper\Program.cs

     文件       1358  2009-12-25 23:03  ZYSocketSuper\Properties\AssemblyInfo.cs

     文件       2011  2009-12-25 23:26  ZYSocketSuper\SocketAsyncEventArgsPool.cs

     文件      12670  2009-12-26 14:04  ZYSocketSuper\ZYSocketSuper.cs

     文件       2642  2009-12-25 23:31  ZYSocketSuper\ZYSocketSuper.csproj

     文件        929  2009-12-25 23:03  ZYSocketSuper.sln

     目录          0  2009-12-25 23:03  ZYSocketSuper\obj\Debug\TempPE

     目录          0  2009-12-25 23:26  ZYSocketSuper\bin\Debug

     目录          0  2009-12-26 14:04  ZYSocketSuper\obj\Debug

     目录          0  2009-12-25 23:02  ZYSocketSuper\bin

     目录          0  2009-12-25 23:02  ZYSocketSuper\obj

     目录          0  2009-12-25 23:03  ZYSocketSuper\Properties

     目录          0  2009-12-26 14:04  ZYSocketSuper

----------- ---------  ---------- -----  ----

               133967                    21


评论

共有 条评论