Exemple #1
0
        private void Socket_Client_Training_Session_Management(object arg)
        {
            //short client_id = (short)arg;
            Int64 client_id = (Int64)arg;

            try
            {
                using (Socket Socket_Client_Training = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)){
                    IPEndPoint Socket_Server_Training = new IPEndPoint(IPAddress.Parse("10.100.82.52"), Port_Socket_Server_Training);
                    Socket_Client_Training.Connect(Socket_Server_Training);
                    //while (true)
                    //{
                    Session_Packet_Client_Training Session_Packet = new Session_Packet_Client_Training();
                    Session_Packet.Packet_Encode(client_id);
                    Socket_Client_Training.Send(Session_Packet.packet);
                    int  resend_times    = 0;
                    bool IsFinishSending = false;
                    while (!IsFinishSending)
                    {
                        int  size_packet_status = Socket_Client_Training.Receive(Session_Packet.packet_status, Session_Packet.packet_status.Length, SocketFlags.None);
                        bool IsDecodeWell       = Session_Packet.packet_status.SequenceEqual(new byte[] { 0x00, 0x08, 0x08, 0x06 });
                        if (IsDecodeWell)
                        {
                            IsFinishSending = true;
                        }
                        else
                        {
                            Socket_Client_Training.Send(Session_Packet.packet);
                            resend_times++;
                        }
                        if (resend_times == 3)
                        {
                            Write_Exception_Log_Client(" Packet Lost | " + "client_id " + client_id.ToString() + " | " + " LocalEndPoint " + Socket_Client_Training.LocalEndPoint + " | " + " md5 wrong and resend over 3 times | Packet Lost");
                            //Write_Session_Log_Client(Session_Packet, Socket_Client_Training);
                            //Write_Session_Binary_Client(Session_Packet, Socket_Client_Training);
                            IsFinishSending = true;
                        }
                    }
                    //Thread.Sleep(30 * 60 * 1000);
                    //}
                    Socket_Client_Training.Close();
                }
            }
            catch (Exception ex)
            {
                Write_Exception_Log_Client("Socket_Client_Training_Session_Management " + "client_id " + client_id.ToString() + " | " + ex.ToString());
                //Socket_Client_Training.Close();
                Thread.Sleep(30 * 1000);
                Socket_Client_Training_Session_Management(arg);
            }
            finally
            {
            }
        }
Exemple #2
0
 private void Write_Session_Log_Client(Session_Packet_Client_Training Session_Packet, Socket Socket_Client_Training)//Sever沒收到正確回報Client,於Client端寫Session Info檔案
 {
     try
     {
         lock (_sesion_log_client_Lock)
         {
             if (!Directory.Exists(GetCurrentFilePath(@"Client\Session Log")))
             {
                 DirectoryInfo di = Directory.CreateDirectory(GetCurrentFilePath(@"Client\Session Log"));
             }
             string file = GetCurrentFilePath(@"Client\Session Log\Packet_Lost_Session_Log_" + DateTime.Now.ToString("yyyyMM") + ".csv");
             string first_line_in_file = "Record Time, Transmit Time, Client_id, RemoteEndPoint, Info, ";
             if (!File.Exists(file))
             {
                 using (StreamWriter sw = File.CreateText(file))
                 {
                     sw.WriteLine(first_line_in_file);
                     sw.WriteLine("@" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ", " +
                                  "@" + Session_Packet.datetime_transmit.ToString("yyyy-MM-dd HH:mm:ss") + ", " +
                                  Session_Packet.client_id2.ToString() + ", " +
                                  Socket_Client_Training.RemoteEndPoint + ", " +
                                  Session_Packet.str_2send
                                  );
                 }
             }
             else if (File.Exists(file))
             {
                 using (StreamWriter sw = File.AppendText(file))
                 {
                     sw.WriteLine("@" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ", " +
                                  "@" + Session_Packet.datetime_transmit.ToString("yyyy-MM-dd HH:mm:ss") + ", " +
                                  Session_Packet.client_id2.ToString() + ", " +
                                  Socket_Client_Training.RemoteEndPoint + ", " +
                                  Session_Packet.str_2send
                                  );
                 }
             }
         }
     }
     catch (Exception ex)
     {
         Write_Exception_Log_Client("Write_Session_Log_Client " + ex.ToString());
     }
     finally
     {
     }
 }
Exemple #3
0
 private void Write_Session_Binary_Client(Session_Packet_Client_Training Session_Packet, Socket Socket_Client_Training)//Sever沒收到正確回報Client,於Client端寫Session Binary檔案
 {
     try
     {
         lock (_sesion_binary_client_Lock)
         {
             if (!Directory.Exists(GetCurrentFilePath(@"Client\Session Binary")))
             {
                 DirectoryInfo di = Directory.CreateDirectory(GetCurrentFilePath(@"Client\Session Binary"));
             }
             string file = GetCurrentFilePath(@"Client\Session Binary\Packet_Lost_Client" + Session_Packet.client_id2 + @"_Binary_" + Session_Packet.datetime_transmit.ToString("yyyyMMddhhmmss") + ".bin");
             File.WriteAllBytes(file, Session_Packet.body_binary);
         }
     }
     catch (Exception ex)
     {
         Write_Exception_Log_Client("Write_Session_Binary_Client " + ex.ToString());
     }
     finally
     {
     }
 }