Exemple #1
0
        void RecMsg(object sokConnectionparn)
        {
            Socket sokClient = sokConnectionparn as Socket;

            while (true)
            {
                int length = -1;
                try
                {
                    length = sokClient.Receive(receiveBytes); // 接收数据,并返回数据的长度;
                    ik     = 0;
                }
                catch (Exception se)
                {
                    //sokClient.Connect(sokClient.RemoteEndPoint);
                    ik++;
                    Console.WriteLine("异常:" + se.Message);
                    LogHelper.Instance.AddLog("日志", "异常", se.Message);
                    if (ik >= 3) //三次容错
                    {
                        // 从 通信套接字 集合中删除被中断连接的通信套接字;
                        if (this.priClientList.Exists(m => m.RemoteEndPoint.Equals(sokClient.RemoteEndPoint.ToString())) == true)
                        {
                            this.priClientList.RemoveAll(m => m.RemoteEndPoint.Equals(sokClient.RemoteEndPoint.ToString()));
                        }
                        // 从通信线程集合中删除被中断连接的通信线程对象;
                        dictThread.Remove(sokClient.RemoteEndPoint.ToString());
                        break;
                    }
                }
                if (length > 0)
                {
                    #region 处理接收到的数据
                    string receiveString = ArConvert.byteToHexStr(receiveBytes.Take(length).ToArray());
                    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "Received: {0}", receiveString);
                    LogHelper.Instance.AddLog("日志", "记录", "Received:" + receiveString);
                    //处理连包 心跳
                    string strXT = "";
                    if (length >= 6 && receiveString.Substring(0, 8).Equals("2183FF00") == true)
                    {
                        strXT = receiveString.Substring(0, 12);
                        this.ExecuteData(sokClient, receiveString.Substring(0, 12));
                    }
                    //数据
                    this.ExecuteData(sokClient, String.IsNullOrEmpty(strXT) == false ? receiveString.Replace(strXT, "") : receiveString);
                    #endregion
                }
            }
        }
Exemple #2
0
        //数据处理接口
        public void ClientServer()
        {
            try
            {
                while (true)
                {
                    //recCount = client.Receive(receiveBytes, receiveBytes.Length, 0);//从客户端接收信息
                    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
                    EndPoint   Remote = (EndPoint)(sender);
                    recCount = client.ReceiveFrom(receiveBytes, ref Remote);

                    if (recCount != 0)//当服务器端的缓冲区接收到的信息不为空时
                    {
                        //data = encoding.getb(receiveBytes, 0, recCount); //接收数据
                        Console.WriteLine(DateTime.Now.ToString() + ArConvert.byteToHexStr(receiveBytes.Take(recCount).ToArray()));
                        Console.WriteLine(DateTime.Now + data);
                        //接收数据成功后给客户端返回OK

                        //client.Send(encoding.GetBytes("OK"), 2, 0);
                    }

                    else
                    {
                        break;
                    }
                }
            }

            catch (Exception ex)
            {
                Console.Write("出现异常:");

                Console.WriteLine(ex.ToString());

                Console.ReadLine();
            }

            client.Close();
        }