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); } }
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); } }