Ejemplo n.º 1
0
        public void EventDisConnectedServer(object sender, NetEventArgs e)
        {
            RunFlag = false;
            TcpCli tc = (TcpCli)sender;

            tc.Connect();
        }
Ejemplo n.º 2
0
    void OnGUI()
    {
        GUILayout.Label("Ping:" + m_rtt + ",Pos:" + m_game.m_ball.position + ",Vel:" + m_game.m_ball.rigidbody.velocity);
        GUILayout.Label(m_state.ToString());
        if (m_state == State.ST_Disconnected)
        {
            if (GUILayout.Button("Connect"))
            {
                //Security.PrefetchSocketPolicy("127.0.0.1", 5001);
                m_client.Connect("127.0.0.1", 5001);
            }
        }
        else
        {
            if (GUILayout.Button("Disconnect"))
            {
                m_client.Close();
                m_state = State.ST_Disconnected;
            }
            switch (m_state)
            {
            case State.ST_Connected:
                if (GUILayout.Button("Automatch"))
                {
                    //send automatch
                    CmdPacket packet = new CmdPacket();
                    packet.WriteUShort(Proto.C_AutoMatch);
                    send(packet);
                    m_state = State.ST_WaitingToMatch;
                }
                break;

            case State.ST_WaitingToMatch:
                if (GUILayout.Button("Cancel Match"))
                {
                    CmdPacket packet = new CmdPacket();
                    packet.WriteUShort(Proto.C_UAutoMatch);
                    send(packet);
                    m_state = State.ST_Connected;
                }
                break;

            case State.ST_GameInit:
            {
                if (GUILayout.Button("Ready"))
                {
                    CmdPacket packet = new CmdPacket();
                    packet.WriteUShort(Proto.C_GameReady);
                    send(packet);
                    m_state = State.ST_WaitingToStart;
                }
                break;
            }

            case State.ST_WaitingToStart:
            case State.ST_GameRunning:
                break;
            }
        }
    }
Ejemplo n.º 3
0
        private static void InitScoketClient()
        {
            foreach (DataRow dr in dtRDSList.Rows)
            {
                RDSConfigModel rm  = new RDSConfigModel();
                string         sfs = dr["SysFlag"].ToString();
                rm.SysFlag = sfs.Split(',');
                initCarOnlineStatusMem(rm.SysFlag);
                string mincid = dr["MinCID"].ToString();
                string maxcid = dr["MaxCID"].ToString();
                long   MinCID = 0, MaxCID = 0;
                long.TryParse(mincid, out MinCID);
                long.TryParse(maxcid, out MaxCID);
                rm.MinCID  = MinCID;
                rm.MaxCID  = MaxCID;
                rm.ID      = dr["ID"].ToString();
                rm.IP      = dr["IP"].ToString();
                rm.Port    = dr["Port"].ToString();
                rm.RDSMark = dr["RDSMark"].ToString();
                rm.WCFUrl  = dr["WCFUrl"].ToString();
                TcpCli tc = new TcpCli(rm.IP, int.Parse(rm.Port));
                tc.ConnectedServer    += rm.EventConnectedServer;
                tc.DisConnectedServer += rm.EventDisConnectedServer;
                tc.ReceivedDatagram   += new NetEvent(tc_ReceivedDatagram);
                try
                {
                    tc.Connect();
                    Thread.Sleep(4000);
                    if (tc.IsConnected)
                    {
                        rm.RunFlag = true;
                    }
                    else
                    {
                        rm.RunFlag = false;
                    }
                }
                catch
                {
                    rm.RunFlag = false;
                }


                rm.TcpClient = tc;

                RDSClient.Add(rm.ID, rm);

                if (rm.RunFlag)
                {
                    LogHelper.WriteInfo("初始化与RDS服务建立连接完成(" + rm.RDSMark + ")");
                }
                else
                {
                    LogHelper.WriteInfo("初始化与RDS服务建立连接失败(" + rm.RDSMark + "),等待维护线程重连");
                }
            }
        }
Ejemplo n.º 4
0
        //连接服务端
        private void button1_Click(object sender, EventArgs e)
        {
            string conn = textBox1.Text;
            ushort port = ushort.Parse(textBox2.Text);

            cli1.Connect(conn, port);
            //InternetStatus.Text = "已连接";
            panel1.Visible = true;
        }
Ejemplo n.º 5
0
 private static void Manager()
 {
     while (true)
     {
         Thread.Sleep(10000);
         //检查所有实时信息服务socket连接
         foreach (RDSConfigModel rm in RDSClient.Values)
         {
             TcpCli tc = rm.TcpClient;
             try
             {
                 if (tc.IsConnected)
                 {
                     tc.SendData(new byte[] { });
                 }
                 else
                 {
                     LogHelper.WriteInfo("RDS服务(" + rm.RDSMark + "),连接中断准备重连!" + tc.IP + ":" + tc.Port);
                     tc.Connect();
                     if (tc.IsConnected)
                     {
                         LogHelper.WriteInfo("RDS服务(" + rm.RDSMark + "),重连成功!" + tc.IP + ":" + tc.Port);
                     }
                     else
                     {
                         LogHelper.WriteInfo("RDS服务(" + rm.RDSMark + "),重连失败!" + tc.IP + ":" + tc.Port);
                     }
                 }
             }
             catch (Exception ex)
             {
                 LogHelper.WriteError("RDS服务(" + rm.RDSMark + "),重连失败!" + tc.IP + ":" + tc.Port, ex);
             }
         }
         //处理超时未处理的 命令或命令执行结果
         List <string> TimeoutOrderAndResult = new List <string>();
         foreach (string key in OrderAndResultTime.Keys)
         {
             DateTime dt = (DateTime)OrderAndResultTime[key];
             if (dt.AddMinutes(10) < DateTime.Now)
             {
                 TimeoutOrderAndResult.Add(key);
             }
         }
         foreach (string key in TimeoutOrderAndResult)
         {
             OrderAndResultTime.Remove(key);
         }
         if (TimeoutOrderAndResult.Count > 0)
         {
             LogHelper.WriteInfo("清除超时的命令,或未处理的命令结果,总计:" + TimeoutOrderAndResult.Count);
         }
     }
 }
Ejemplo n.º 6
0
        public static void Main()
        {
            Console.WriteLine("Begin to Test TcpCli Class..");
            //ArrayList al = new ArrayList();

            TcpClient test = new TcpClient();
            TcpCli    cli1 = new TcpCli(new Coder(Coder.EncodingMothord.Default));

            //cli1.Resovlver = new DatagramResolver("]}");
            cli1.ReceivedDatagram   += new NetEvent(test.RecvData);
            cli1.DisConnectedServer += new NetEvent(test.ClientClose);
            cli1.ConnectedServer    += new NetEvent(test.ClientConn);
            cli1.Connect("127.0.0.1", 5001);
            //命令控制循环
            while (true)
            {
                Console.Write(">");
                string cmd = Console.ReadLine();
            }//end of while
        }
Ejemplo n.º 7
0
 private static bool ReConnect(TcpCli tc)
 {
     try
     {
         tc.Connect();
         Thread.Sleep(4000);
         if (tc.IsConnected)
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch
     {
         return(false);
     }
 }
Ejemplo n.º 8
0
 private void Timer_Connect_Elapsed(object sender, ElapsedEventArgs e)
 {
     if (!cli.IsConnected)
     {
         try
         {
             cli.Connect(Service_IP, Service_Port);
             StatusMessage = "已连接";
         }
         catch (Exception)
         {
             StatusMessage = "连接远程服务器失败";
             cli.Close();
         }
     }
     else
     {
         string json = Newtonsoft.Json.JsonConvert.SerializeObject(This_clientConfig);
         cli.Send(json);
     }
 }
Ejemplo n.º 9
0
        /// <summary>
        /// 构建连接
        /// </summary>
        private void MakeConnectWithListener()
        {
            cli = new TcpCli(new Coder(Coder.EncodingMothord.UTF8));

            //cli.Resovlver = new DatagramResolver("}");
            cli.ReceivedDatagram   += new NetEvent(RecvData);
            cli.DisConnectedServer += new NetEvent(ClientClose);
            cli.ConnectedServer    += new NetEvent(ClientConn);

            if (!cli.IsConnected) // 启动就连接
            {
                try
                {
                    cli.Connect(Service_IP, Service_Port);
                    StatusMessage = "已连接";
                }
                catch (Exception ex)
                {
                    StatusMessage = "连接远程服务器失败";
                    cli.Close();
                }
            }
        }
Ejemplo n.º 10
0
        private void toolStripButtonStart_Click(object sender, EventArgs e)
        {
            try
            {
                switch (toolStripButtonStart.Text)
                {
                case "Start Connect":
                    toolStripButtonStart.BackColor             = Color.Blue;
                    toolStripButtonStart.ImageTransparentColor = Color.Blue;
                    toolStripButtonStart.BackgroundImage       = Client.Properties.Resources.Blue;
                    toolStripButtonStart.Image = Client.Properties.Resources.Blue;
                    toolStripButtonStart.Text  = "DisConnect";
                    PortNo.Enabled             = false;
                    IPNo.Enabled = false;
                    tc           = new TcpCli(new Coder(Coder.EncodingMothord.UTF8));
                    //tc = new TcpCli(new Coder(Coder.EncodingMothord.HexString));
                    //tc.Resovlver = new DatagramResolver(Convert.ToChar(4).ToString());//EOT (end of transmission)
                    tc.ReceivedDatagram   += new NetEvent(RecvData);
                    tc.DisConnectedServer += new NetEvent(ClientClose);
                    tc.ConnectedServer    += new NetEvent(ClientConn);
                    tc.ExceptionMessage   += new NetEvent(ClienError);
                    tc.Connect(IPNo.Text, Convert.ToUInt16(PortNo.Text));
                    tc.HeadLength      = true;
                    buttonSend.Enabled = true;
                    SendData.Enabled   = true;
                    rtbe1.SetText(String.Format("Connect to [{0}]({1})", IPNo.Text, PortNo.Text), true);
                    break;

                case "DisConnect":
                    toolStripButtonStart.BackColor             = Color.Red;
                    toolStripButtonStart.ImageTransparentColor = Color.Red;
                    toolStripButtonStart.BackgroundImage       = Client.Properties.Resources.Red;
                    toolStripButtonStart.Image = Client.Properties.Resources.Red;
                    toolStripButtonStart.Text  = "Start Connect";
                    PortNo.Enabled             = true;
                    IPNo.Enabled       = true;
                    buttonSend.Enabled = false;
                    SendData.Enabled   = false;
                    tc.Close();
                    tc.Dispose();
                    rtbe1.SetText(String.Format("DisConnect to [{0}]({1})", IPNo.Text, PortNo.Text), true);
                    break;

                default:
                    break;
                }
            }
            catch (Exception ex)
            {
                toolStripStatusLabel1.Text                 = ex.Message.ToString();
                toolStripButtonStart.BackColor             = Color.Red;
                toolStripButtonStart.ImageTransparentColor = Color.Red;
                toolStripButtonStart.BackgroundImage       = Client.Properties.Resources.Red;
                toolStripButtonStart.Image                 = Client.Properties.Resources.Red;
                toolStripButtonStart.Text = "Start Connect";
                PortNo.Enabled            = true;
                IPNo.Enabled       = true;
                buttonSend.Enabled = false;
                SendData.Enabled   = false;
                tc.Close();
                tc.Dispose();
                rtbe1.SetText(String.Format("DisConnect to [{0}]({1})", IPNo.Text, PortNo.Text), true);
            }
        }
Ejemplo n.º 11
0
 public void Connected(string localIP, int localPort)
 {
     this.localIP   = localIP;
     this.localPort = localPort;
     cli.Connect(localIP, localPort);
 }
Ejemplo n.º 12
0
        public static void Main()
        {
            Console.WriteLine("Begin to Test TcpCli Class..");
            //ArrayList al = new ArrayList();

            TcpClient test = new TcpClient();
            TcpCli    cli1 = new TcpCli(new Coder(Coder.EncodingMothord.Default));

            cli1.Resovlver           = new DatagramResolver("]}");
            cli1.ReceivedDatagram   += new NetEvent(test.RecvData);
            cli1.DisConnectedServer += new NetEvent(test.ClientClose);
            cli1.ConnectedServer    += new NetEvent(test.ClientConn);

            try
            {
                //命令控制循环
                while (true)
                {
                    Console.Write(">");
                    string cmd = Console.ReadLine();

                    if (cmd.ToLower() == "exit")
                    {
                        break;
                    }
                    if (cmd.ToLower() == "close")
                    {
                        //cli.Close();
                        continue;
                    }

                    if (cmd.ToLower().IndexOf("conn") != -1)
                    {
                        cmd = cmd.ToLower();
                        string[] para = cmd.Split(' ');

                        if (para.Length != 3)
                        {
                            Console.WriteLine("Error Command");
                            continue;
                        }

                        try
                        {
                            string conn = para[1];
                            ushort port = ushort.Parse(para[2]);
                            cli1.Connect(conn, port);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }

                        continue;
                    }

                    if (cmd.ToLower().IndexOf("send") != -1)
                    {
                        cmd = cmd.ToLower();
                        string[] para = cmd.Split(' ');

                        if (para.Length != 2)
                        {
                            Console.WriteLine("Error Command");
                        }
                        else
                        {
                            try
                            {
                                cli1.Send(para[1]);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                            }
                        }

                        continue;
                    }
                    Console.WriteLine("Unkown Command");
                }//end of while

                Console.WriteLine("End service");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }