예제 #1
0
        public static void SendBytes(TcpClient c, BaseEncode BaseEncode, byte ender, Action <long> action)
        {
            //declare variables
            byte[] bytes = new byte[1024];
            var    utf   = BaseEncode.GetnetworkEncoding();

            NetworkStream s = c.GetStream();

            c.SendTimeout = 1000;
            MemoryStream ms = new MemoryStream(utf.data);


            int x;

            while ((x = ms.Read(bytes, 0, bytes.Length)) > 0)
            {
                if (action != null)
                {
                    action.Invoke(ms.Position);
                }

                s.Write(bytes, 0, x);
            }
            s.WriteByte(ender);
            Console.WriteLine("H=" + BaseEncode.String());
            ms.CopyTo(s);
        }
예제 #2
0
 public static bool ByteArrayToFile(string fileName, BaseEncode uc, Action <int, int> act = null)
 {
     try
     {
         using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
         {
             MemoryStream ms     = new MemoryStream(uc.data);
             byte[]       buffer = new byte[2048];
             int          bytesRead;
             while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) > 0)
             {
                 fs.Write(buffer, 0, bytesRead);
                 if (act != null)
                 {
                     act((int)(ms.Position * 100 / ms.Length), (int)ms.Position);
                 }
             }
             return(true);
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception caught in process: {0}", ex);
         return(false);
     }
 }
예제 #3
0
        public static List <int> GetIndexes(BaseEncode data, string separator)
        {
            byte[] data2        = data.data;
            var    foundIndexes = new List <int>();

            for (int i = Array.IndexOf(data2, baseEncoding.GetBytes(separator)[0]); i > -1; i = Array.IndexOf(data2, baseEncoding.GetBytes(separator)[0], i + 1))
            {
                foundIndexes.Add(i);
            }
            return(foundIndexes);
        }
예제 #4
0
        public BaseEncode Bytes()
        {
            string       arguments = $"{message}{separator2}{successful}{separator1}";
            MemoryStream ms        = new MemoryStream();

            ms.Write(new BaseEncode(arguments).data);
            ms.Write(messagearray.data);
            var u = new BaseEncode(ms.ToArray());

            return(u);
        }
예제 #5
0
        public ClientMessage(BaseEncode bytes)
        {
            var indexes = GetIndexes(bytes, separator1);

            byte[] new1 = new byte[indexes[0]];
            byte[] new2 = new byte[bytes.data.Length - indexes[0]];
            Array.ConstrainedCopy(bytes.data, 0, new1, 0, indexes[0]);
            Array.ConstrainedCopy(bytes.data, indexes[0], new2, 0, new2.Length);
            var data1 = new BaseEncode(new1); //arguments
            var data2 = new BaseEncode(new2); //sub-array

            byte[] src = data2.data;
            byte[] dst = new byte[src.Length - separator1.Length];
            Array.Copy(src, separator1.Length, dst, 0, dst.Length);
            var data3 = new BaseEncode(dst);//array

            messagearray = data3;
            operation    = data1.String().Split(separator2)[0];
            message      = data1.String().Split(separator2)[1];
        }
예제 #6
0
 public ServerMessage(string message1, bool successful1, BaseEncode messagearray1 = null)
 {
     if (message1 == string.Empty)
     {
         message = "null";
     }
     else
     {
         message = message1;
     }
     if (messagearray1 == null)
     {
         messagearray = new BaseEncode("null");
     }
     else
     {
         messagearray = messagearray1;
     }
     successful = successful1;
 }
예제 #7
0
 public ClientMessage(string operation1, string message1, BaseEncode messagearray1 = null)
 {
     operation = operation1;
     if (message1 == string.Empty)
     {
         message = "null";
     }
     else
     {
         message = message1;
     }
     if (messagearray1 == null)
     {
         messagearray = new BaseEncode("null");
     }
     else
     {
         messagearray = messagearray1;
     }
 }
예제 #8
0
 public ClientMessage()
 {
     operation    = "null";
     message      = "null";
     messagearray = new BaseEncode("null");
 }
예제 #9
0
 public ServerMessage()
 {
     successful   = false;
     message      = "null";
     messagearray = new BaseEncode("null");
 }