Esempio n. 1
0
        static void Main(string[] args)
        {
            try
            {
                // Get endpoint for the listener.
                IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, port);

                //WriteInfoToConsole(localEndPoint);

                //This object holds a lot of settings that we pass from Main method
                //to the SocketListener. In a real app, you might want to read
                //these settings from a database or windows registry settings that
                //you would create.
                SocketListenerSettings theSocketListenerSettings =
                    new SocketListenerSettings(maxNumberOfConnections,
                                               excessSaeaObjectsInPool, backlog, maxSimultaneousAcceptOps,
                                               receivePrefixLength, testBufferSize, sendPrefixLength, opsToPreAlloc,
                                               localEndPoint);

                Console.WriteLine("SocketListener init begin");

                //instantiate the SocketListener.
                SocketListener socketListener = new SocketListener(theSocketListenerSettings);

                Console.WriteLine("SocketListener init end");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
Esempio n. 2
0
        public SocketListener(SocketListenerSettings theSocketListenerSettings)
        {
            this.socketListenerSettings = theSocketListenerSettings;
            this.prefixHandler          = new PrefixHandler();
            this.messageHandler         = new MessageHandler();

            // Allocate memory for buffers. We are using a separate buffer space for
            // receive and send, instead of sharing the buffer space, like the Microsoft
            // example does.
            this.theBufferManager = new BufferManager(this.socketListenerSettings.BufferSize
                                                      * this.socketListenerSettings.NumberOfSaeaForRecSend
                                                      * this.socketListenerSettings.OpsToPreAllocate,
                                                      this.socketListenerSettings.BufferSize
                                                      * this.socketListenerSettings.OpsToPreAllocate);

            this.poolOfRecSendEventArgs = new
                                          SocketAsyncEventArgsPool(this.socketListenerSettings.NumberOfSaeaForRecSend);

            this.poolOfAcceptEventArgs = new
                                         SocketAsyncEventArgsPool(this.socketListenerSettings.MaxAcceptOps);

            // Create connections count enforcer
            this.theMaxConnectionsEnforcer = new
                                             Semaphore(this.socketListenerSettings.MaxConnections,
                                                       this.socketListenerSettings.MaxConnections);

            // Microsoft's example called these from Main method, which you
            // can easily do if you wish.
            Init();
            StartListen();
        }