示例#1
0
        public void push(SocketAsyncEventArgs item)
        {
            Log.ASSERT("item is null!", item != null);


            m_pool.Enqueue(item);
        }
        void process_accept(SocketAsyncEventArgs e)
        {
            try
            {
                SocketAsyncEventArgs readEventArg = m_receiveEventArgsPool.pop();
                Log.ASSERT("There are no more available sockets to allocate.", readEventArg != null);
                Log.ASSERT("Client form {0} has disconnected!", e.AcceptSocket.Connected, e.AcceptSocket.RemoteEndPoint.ToString());

                Interlocked.Increment(ref m_numConnectedSocket);
                ((AsyncUserToken)readEventArg.UserToken).Socket = e.AcceptSocket;

                //产生Robot,并返回socketid 到client
                m_robotSystem.generate_robot(e.AcceptSocket);

                Log.INFO("Client from {0} connection accepted.There are {1} clients connected to the server", e.AcceptSocket.RemoteEndPoint.ToString(), m_numConnectedSocket);
                if (!e.AcceptSocket.ReceiveAsync(readEventArg))
                {
                    process_receive(readEventArg);
                }
            }
            catch (SocketException ex)
            {
                Log.INFO("Error when processing data received from {0}:\r\n{1}", e.AcceptSocket.RemoteEndPoint, ex.ToString());
            }
            catch (Exception ex)
            {
                Log.INFO(ex.ToString());
            }
            start_accept(e);
        }
 public void generate_robots(int robotsNum)
 {
     Log.ASSERT("robotsNum:{0} exceed the max robot number: {1}", robotsNum <= m_numRobotsMax, robotsNum, m_numRobotsMax);
     m_numRobots = robotsNum;
     for (int i = 0; i < m_numRobots; i++)
     {
         Robot robot = new Robot(i);
         m_robots.Add(robot);
     }
 }
示例#4
0
 public void connect()
 {
     m_socket.ConnectAsync(m_connectEventArg);//Begins an asynchronous request for a connection to a remote host.
     m_autoConnectSignal.WaitOne();
     Log.ASSERT("connect failed!", m_connectEventArg.SocketError == SocketError.Success);
     if (!m_socket.ReceiveAsync(m_receiveEventArg))
     {
         process_receive(m_receiveEventArg);
     }
 }