public SearchPage(Socket clientSocket, ClientsDetailsPackage cdp)
        {
            InitializeComponent();

            this.clientSocket     = clientSocket;
            this.cdp              = cdp;
            MainLablePage.Content = "Hello " + cdp.Username;

            listener = new Listener(cdp.IP, cdp.Port, cdp.UpPath);
        }
        private void ReciveCallback(IAsyncResult ar)
        {
            try
            {
                int received = clientSocket.EndReceive(ar);

                if (received > 0)
                {
                    response = Encoding.ASCII.GetString(buffer, 0, received);
                    response = response.Substring(0, response.Length - 5);

                    ClientsDetailsPackage cdp = (ClientsDetailsPackage)JsonConvert.DeserializeObject(response, typeof(ClientsDetailsPackage));

                    if (cdp.Exist)
                    {
                        Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal,
                                               (Action)(() =>
                        {
                            SearchPage dp = new SearchPage(clientSocket, cdp);
                            dp.Show();
                            Close();
                        }
                                                        ));
                    }

                    else
                    {
                        Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal,
                                               (Action)(() =>
                        {
                            usernameTB.Clear();
                            passwordBox.Clear();
                        }
                                                        ));

                        response = "";
                        MessageBoxResult result = MessageBox.Show("Username or Password incorrect", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
            }

            catch (Exception e)
            {
                MessageBoxResult result = MessageBox.Show(e.ToString(), "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Beispiel #3
0
        private void ReadCallback(IAsyncResult ar)
        {
            Socket handler  = (Socket)ar.AsyncState;
            int    received = handler.EndReceive(ar);

            if (received > 0)
            {
                sb.Append(Encoding.ASCII.GetString(buffer, 0, received));
                string content = sb.ToString();

                if (content.IndexOf(ServerConstants.EOF) > -1)
                {
                    content = content.Substring(0, content.Length - 5);
                    serverTB.AppendText("Read " + content.Length + " bytes from socket.\r\nData: " + content + "\r\n\r\n");

                    var deserialized = JsonConvert.DeserializeObject <PackageWrapper>(content);
                    if (deserialized.PackageType == typeof(LoginPackage))
                    {
                        LoginPackage lp = (LoginPackage)JsonConvert.DeserializeObject(Convert.ToString(deserialized.Package), deserialized.PackageType);

                        ClientsDetailsPackage client = Client.getClientsDetailsPackage(lp);

                        byte[] sendClient = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(client) + ServerConstants.EOF);
                        handler.BeginSend(sendClient, 0, sendClient.Length, 0, new AsyncCallback(SendCallback), handler);
                    }

                    else if (deserialized.PackageType == typeof(FileSearch))
                    {
                        FileSearch fs = (FileSearch)JsonConvert.DeserializeObject(Convert.ToString(deserialized.Package), deserialized.PackageType);

                        List <FileDetails> lfd        = new List <FileDetails>();
                        List <File>        listFile   = new List <File>();
                        List <ClientFile>  listClient = new List <ClientFile>();
                        Client             client     = new Client();
                        FilePackage        fp         = new FilePackage();

                        if (fs.FileName.CompareTo("*") == 0)
                        {
                            listFile = File.getAllFilesList();

                            foreach (var item in listFile)
                            {
                                listClient = ClientFile.getAllFilesById(item.Id);
                                foreach (var item2 in listClient)
                                {
                                    client.getClient(item2.Username);

                                    FileDetails f = new FileDetails
                                    {
                                        Username = item2.Username,
                                        FileName = item.Name,
                                        FileSize = item.Size,
                                        Ip       = client.Ip,
                                        Port     = client.Port
                                    };

                                    lfd.Add(f);
                                }
                            }

                            fp.Exist     = true;
                            fp.FilesList = lfd;
                        }

                        else if (!File.isFileExist(fs.FileName))
                        {
                            fp.Exist = false;
                        }

                        else
                        {
                            listFile = File.getAllFilesListByName(fs.FileName);

                            foreach (var item in listFile)
                            {
                                listClient = ClientFile.getAllFilesById(item.Id);
                                foreach (var item2 in listClient)
                                {
                                    client.getClient(item2.Username);
                                    int size = item.Size;

                                    FileDetails f = new FileDetails
                                    {
                                        Username = item2.Username,
                                        FileName = item.Name,
                                        FileSize = size,
                                        Ip       = client.Ip,
                                        Port     = client.Port
                                    };

                                    lfd.Add(f);
                                }
                            }

                            fp.Exist     = true;
                            fp.FilesList = lfd;
                        }

                        byte[] sendAnswer = Encoding.ASCII.GetBytes(JsonConvert.SerializeObject(fp) + ServerConstants.EOF);
                        handler.BeginSend(sendAnswer, 0, sendAnswer.Length, 0, new AsyncCallback(SendCallback), handler);
                    }

                    else
                    {
                        LogoutPackage lp = (LogoutPackage)JsonConvert.DeserializeObject(Convert.ToString(deserialized.Package), deserialized.PackageType);
                        Client.setLogOut(lp.Username);
                    }
                }

                else
                {
                    handler.BeginReceive(buffer, 0, ServerConstants.BufferSize, 0, new AsyncCallback(ReadCallback), handler);
                }

                sb.Clear();
                handler.BeginReceive(buffer, 0, ServerConstants.BufferSize, 0, new AsyncCallback(ReadCallback), handler);
            }
        }