Exemple #1
0
        private void StartReceive()
        {
            new Thread(delegate()
            {
                byte[] buffer = new byte[DATA_LENGTH];
                while (true)
                {
                    try
                    {
                        if (isClosed || !socket.Connected)
                        {
                            //Close();
                            return;
                        }
                        buffer     = new byte[socket.Available];
                        int length = socket.Receive(buffer, buffer.Length, SocketFlags.None);

                        if (length <= 0)
                        {
                            continue;
                        }
                        string packetString = Encoding.Default.GetString(buffer);
                        OnReceive(packetString);
                        //Thread.Sleep(1);
                    }
                    catch (Exception e)
                    {
                        Eutils.FileError(String.Format("{0} {1} \n", e.Message, e.StackTrace), "client_error.txt");
                        Eutils.WriteLine("Error Receiving! Message:{0} Stacktrace: {1}", Eutils.MESSSAGE_TYPE.ERROR, e.Message, e.StackTrace);
                        Close();
                        break;
                    }
                }
            }).Start();
        }
Exemple #2
0
        public void Send(string dataToSend)
        {
            if (isClosed)
            {
                return;
            }
            if (socket == null || !socket.Connected)
            {
                Close();
                return;
            }

            dataToSend = QEncryption.Encrypt(dataToSend);
            dataToSend = PacketDatas.PACKET_HEADER + dataToSend;
            //We us UTF8 characterss so lets convert the bytes into utf8 string!
            byte[] dataBytes = Encoding.UTF8.GetBytes(dataToSend);
            //And then send it to our client.
            try
            {
                socket.Send(dataBytes, SocketFlags.None);
            }
            catch (Exception e)
            {
                Eutils.FileError(String.Format("{0} {1} \n", e.Message, e.StackTrace), "client_error.txt");
                Eutils.WriteLine("Error Sending! Message:{0}", Eutils.MESSSAGE_TYPE.ERROR, e.Message, e.StackTrace);
                Close();
            }
        }
Exemple #3
0
 private void ReceiveCallback(IAsyncResult ar)
 {
     try
     {
         StateObject state = (StateObject)ar.AsyncState;
         if (isClosed || socket == null || !socket.Connected || socket.Available != 0 || socket.Poll(0, SelectMode.SelectRead))
         {
             Close();
             return;
         }
         // Read data from the client socket.
         int bytesRead = socket.EndReceive(ar);
         //More data
         if (bytesRead > 0)
         {
             state.stringBuilder.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));
             string packetData = state.stringBuilder.ToString();
             state = new StateObject();//reset
             socket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
             OnReceive(packetData);
         }
     }
     catch (Exception e)
     {
         Eutils.FileError(String.Format("{0} {1} \n", e.Message, e.StackTrace), "client_error.txt");
         Eutils.WriteLine("Error receiving:{0} {1}", Eutils.MESSSAGE_TYPE.ERROR, e.Message, e.StackTrace);
         Close();
     }
 }
Exemple #4
0
 private void OnReceive(string packetString)
 {
     //Then we send this.
     if (packetString[0].ToString() != PacketDatas.PACKET_HEADER)
     {
         Close();
         return;
     }
     string[] packets = packetString.Split(new string[] { PacketDatas.PACKET_HEADER }, StringSplitOptions.None);
     for (int i = 1; i < packets.Length; i++)
     {
         //Eutils.WriteLine("received data:{0} at Time:{1} Length:{2}", Eutils.MESSSAGE_TYPE.NORMAL, packets[i], DateTime.Now, packets[i].Length);
         packets[i] = QEncryption.Decrypt(packets[i]);
         Eutils.WriteLine("decrypted data:{0} at Time:{1} Length:{2}", Eutils.MESSSAGE_TYPE.NORMAL, packets[i], DateTime.Now, packets[i].Length);
         if (packets[i] == "NULL")
         {
             Eutils.FileError(String.Format("{0} \n", "Error decrypting: packets[i] == NULL"), "client_error.txt");
             Eutils.WriteLine("Error decrypting", Eutils.MESSSAGE_TYPE.ERROR);
             //Close();
             break;
         }
         //Split the packet by our split character.
         string[] packetStrings = packets[i].Split(new string[] { PacketDatas.PACKET_SPLIT }, StringSplitOptions.None);
         received(this, packetStrings);
     }
 }