예제 #1
0
        static void Main(string[] args)
        {
            TCPAcceptor accepter = new TCPAcceptor(1234, 10);

            accepter.Logger           = logger;
            accepter.ClientConnected += Accepter_ClientConnected;
            accepter.Run();

            while (true)
            {
                ;
            }
        }
예제 #2
0
        bool BindAcceptor(Variant node)
        {
            //1. Get the chain
            var chain = ProtocolFactoryManager.ResolveProtocolChain(node[CONF_PROTOCOL]);

            if (chain.Count == 0)
            {
                WARN("Invalid protocol chain: {0}", node[CONF_PROTOCOL]);
            }
            //2. Is it TCP or UDP based?
            if (chain[0] == ProtocolTypes.PT_TCP)
            {
                //3. This is a tcp acceptor. Instantiate it and start accepting connections
                var pAcceptor = new TCPAcceptor(node[CONF_IP], node[CONF_PORT], node, chain);
                if (!pAcceptor.Bind())
                {
                    FATAL("Unable to fire up acceptor from this config node:{0}", node.ToString());
                    return(false);
                }
                acceptors.Add(pAcceptor);
                return(true);
            }
            else if (chain[0] == ProtocolTypes.PT_UDP)
            {
                //4. Ok, this is an UDP acceptor. Because of that, we can instantiate
                //the full stack. Get the stack first
                var pProtocol = ProtocolFactoryManager.CreateProtocolChain(chain, node);
                if (pProtocol == null)
                {
                    FATAL("Unable to instantiate protocol stack {0}", node[CONF_PROTOCOL]);
                    return(false);
                }
                //5. Create the carrier and bind it
                var pUDPCarrier = UDPCarrier.Create(node[CONF_IP], node[CONF_PORT], pProtocol);
                if (pUDPCarrier == null)
                {
                    FATAL("Unable to instantiate UDP carrier on {0}:{1}", node[CONF_IP],
                          node[CONF_PORT]);
                    pProtocol.EnqueueForDelete();
                    return(false);
                }
                pUDPCarrier.Parameters = node;
                acceptors.Add(pUDPCarrier);
                return(true);
            }
            else
            {
                FATAL("Invalid carrier type");
                return(false);
            }
        }
 virtual public bool AcceptTCPConnection(TCPAcceptor pTCPAcceptor, SocketAsyncEventArgs e)
 {
     return(pTCPAcceptor.Accept(e));
 }