Exemple #1
0
        public void PushDeal()
        {
            PropertyHelper.DealIsPushed = true;

            SoftwareProduct[] Products = Settings.simulation.GetAllProducts().Where(pr =>
                                                                                    (pr.Type.ToString() == "CMS" ||
                                                                                     pr.Type.ToString() == "Office Software" ||
                                                                                     pr.Type.ToString() == "Operating System" ||
                                                                                     pr.Type.ToString() == "Game") &&
                                                                                    pr.Userbase > 0 &&
                                                                                    pr.DevCompany.Name != Settings.MyCompany.Name &&
                                                                                    pr.ServerReq > 0 &&
                                                                                    !pr.ExternalHostingActive)
                                         .ToArray();

            int index = PropertyHelper.Random.Next(0, Products.Length);

            SoftwareProduct prod = Settings.simulation.GetProduct(Products.ElementAt(index).SoftwareID, false);

            ServerDeal deal = new ServerDeal(Products[index])
            {
                Request = true
            };

            deal.StillValid(true);
            HUD.Instance.dealWindow.InsertDeal(deal);
        }
Exemple #2
0
        /// <summary>
        /// 等待客户端的连接 并且创建与之通信的Socket
        /// </summary>
        //static Socket socketSend;
        void Listen(object o)
        {
            try {
                Socket socketWatch = o as Socket;
                while (true)
                {
                    //等待接收客户端连接
                    Socket socketSend = socketWatch.Accept();

                    //获取客户端的IP和端口
                    IPEndPoint ipEndClient = (IPEndPoint)socketSend.RemoteEndPoint;
                    //输出客户端的IP和端口
                    Console.Write("Connect with {0} at port {1}", ipEndClient.Address, ipEndClient.Port);

                    ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功!");

                    //创建一个服务器处理流程
                    ServerDeal serverdeal = new ServerDeal();
                    serverdeal.socket = socketSend;

                    //开启一个新线程,执行接收消息方法
                    Thread r_thread = new Thread(Received);
                    r_thread.IsBackground = true;
                    r_thread.Start(serverdeal);
                }
            }
            catch (Exception ee) {
                ShowMsg(ee.ToString());
            }
        }
Exemple #3
0
 //断线的操作
 private void clientBreakUp(ServerDeal serverDeal, Socket curSocket)
 {
     //调用客户端断开
     serverDeal.clientBreak(true);
     ShowMsg(curSocket.RemoteEndPoint + ": 当前已断开");
     curSocket.Close();
     serverDeal = null;
 }
Exemple #4
0
        /// <summary>
        /// 服务器端不停的接收客户端发来的消息
        /// </summary>
        /// <param name="o"></param>
        void Received(object o)
        {
            ServerDeal serverDeal = o as ServerDeal;
            Socket     curSocket  = serverDeal.socket;

            //设置接受时间的超时时间(客户端会定时发心跳包)
            //curSocket.ReceiveTimeout = Constants.HEART_BEAT_TIME;
            try {
                while (true)
                {
                    //客户端连接服务器成功后,服务器接收客户端发送的消息
                    byte[] buffer = new byte[1024 * 1024 * 3];
                    //实际接收到的有效字节数
                    if (IsSocketConnected(curSocket, serverDeal))
                    {
                        int len = curSocket.Receive(buffer);
                        //如果当前已断开
                        if (len <= 0 || !IsSocketConnected(curSocket, serverDeal))
                        {
                            clientBreakUp(serverDeal, curSocket);
                            break;
                        }

                        //获取服务器传来的消息
                        serverDeal.msg = Encoding.UTF8.GetString(buffer, 0, len);

                        //屏幕上显示(测试)
                        ShowMsg(curSocket.RemoteEndPoint + ": receive " + serverDeal.msg);

                        //服务器处理该进程
                        serverDeal.processUpdate();
                    }
                    else
                    {
                        clientBreakUp(serverDeal, curSocket);
                        break;
                    }
                }
            }
            catch (Exception ee) {
                ShowMsg(ee.ToString());
                clientBreakUp(serverDeal, curSocket);
            }
        }
Exemple #5
0
        public void PushDeal()
        {
            PropertyHelper.DealIsPushed = true;

            SoftwareProduct[] Products = GameSettings.Instance.simulation.GetAllProducts().Where(pr =>
                                                                                                 (pr.Type.ToString() == "CMS" ||
                                                                                                  pr.Type.ToString() == "Office Software" ||
                                                                                                  pr.Type.ToString() == "Operating System" ||
                                                                                                  pr.Type.ToString() == "Game") &&
                                                                                                 pr.Userbase > 0 &&
                                                                                                 pr.DevCompany.Name != GameSettings.Instance.MyCompany.Name &&
                                                                                                 pr.ServerReq > 0 &&
                                                                                                 !pr.ExternalHostingActive)
                                         .ToArray();

            int index = PropertyHelper.rnd.Next(0, Products.Length);

            SoftwareProduct prod =
                GameSettings.Instance.simulation.GetProduct(Products.ElementAt(index).SoftwareID, false);

            //var servers = GameSettings.Instance.GetAllServers();
            //foreach(var srv in servers)
            //{
            //    foreach(var item in srv.Items)
            //    {
            //        item.HandleLoad(100f);
            //    }
            //}
            ServerDeal deal = new ServerDeal(Products[index])
            {
                Request = true
            };

            deal.StillValid(true);
            HUD.Instance.dealWindow.InsertDeal(deal);
        }
Exemple #6
0
 static bool IsSocketConnected(Socket s, ServerDeal serverDeal)
 {
     return(!((s.Poll(1000, SelectMode.SelectRead) && (s.Available == 0)) || !s.Connected));
 }
Exemple #7
0
        public GameProcess gameProcess  = null; //玩家所对应的游戏进程

        //消除电脑玩家(消除玩家的所有引用)
        public void destroyAIPlayer()
        {
            curServerDeal = null;
            lobby         = null;
            gameProcess   = null;
        }