.NET开发异步SOCKET (IOCP)

在网上很多人讨论.NET异步SOCKET通信的问题。

很多人都有误解,都以为非要用系统底层的IOCP,实际上没那么麻烦,要相信.NET封装了所有系统底层操作。

实际上.NET的IOCP微软早有例子,下面是该例子:

class Server
{
    private int m_numConnections;   // the maximum number of connections the sample is designed to handle simultaneously
    private int m_receiveBufferSize;// buffer size to use for each socket I/O operation
    BufferManager m_bufferManager;  // represents a large reusable set of buffers for all socket operations
    const int opsToPreAlloc = 2;    // read, write (don't alloc buffer space for accepts)
    Socket listenSocket;            // the socket used to listen for incoming connection requests
    // pool of reusable SocketAsyncEventArgs objects for write, read and accept socket operations
    SocketAsyncEventArgsPool m_readWritePool;
    int m_totalBytesRead;           // counter of the total # bytes received by the server
    int m_numConnectedSockets;      // the total number of clients connected to the server
    Semaphore m_maxNumberAcceptedClients;
   ...略(参考MSDN,百度查询关键字SocketAsyncEventArgs可查到此例子)
}
也就是微软为SOCKET定义的那些BeginXXX(.NET2.0)或ReceiveAsync(.NET3.5)等等那些方法。

这是.NET完成端口的实现。

笔者开发了基于此的TCP服务器,可以支持10万人同时在线。

转http://norke.blog.163.com/blog/static/276572082011828102721125/

posted @ 2014-03-18 17:00  Net-Spider  阅读(442)  评论(0)    收藏  举报