/// <summary> /// Usuwa pliki z serwer /// </summary> /// <param name="plikiDoUsuniecia">Lista plików do usunięcia</param> /// <returns>Odpowiedź od serwera</returns> public int usunPliki(List<pojedynczyPlik> plikiDoUsuniecia) { List<plikInfo> plikiDoUs = new List<plikInfo>(); foreach (pojedynczyPlik p in plikiDoUsuniecia) plikiDoUs.Add(new plikInfo(p.nazwa, -1, -1, -1, p.hash)); try { klientUsun usun = new klientUsun(sessionID, (int)operacje.usuwanie, plikiDoUs); XmlSerializer xml = new XmlSerializer(typeof(klientUsun)); StringWriter stringWriter = new StringWriter(); xml.Serialize(stringWriter, usun, names); string strToWrite = stringWriter.ToString() + endl; wyslij(ASCIIEncoding.ASCII.GetBytes(strToWrite), strToWrite.Length); } catch (Exception ex) { throw new Wyjatki.BladWysylania("Blad podczas usuwania plików z serwera -- usuwanie zapytanie"); } for (int j = 0; j < plikiDoUsuniecia.Count; j++) { serwerBase odpSerw = new serwerBase(); try { XmlSerializer xml = new XmlSerializer(typeof(serwerBase)); string str = pobierz(); odpSerw = (serwerBase)xml.Deserialize(new StringReader(str)); } catch (Wyjatki.BladOdbierania bo) { bo.add("-- usuwanie odpowiedz"); throw bo; } catch (Exception) { throw new Wyjatki.BladParsowania("Dostano bledne dane od serwera lub nastapil blad programu -- usuwanie odpowiedz"); } if (odpSerw.odp == (int)odpowiedzi.blad_serwera || odpSerw.odp == (int)odpowiedzi.bledny_numer_sesji) return odpSerw.odp; } return 1; }
/// <summary> /// Wysyła plik na serwer /// </summary> /// <param name="nazwa">Nazwa pliku</param> /// <param name="data">Data pliku</param> /// <param name="rozmiar">Rozmiar pliku</param> /// <returns>Odpowiedź od serwera</returns> public int uploadFile(string nazwa, DateTime data, int rozmiar) { string katalog = ((folder[folder.Length - 1] == '/') ? folder : folder + "/"); if (!File.Exists(katalog + nazwa)) return -4; try { StringWriter stringWriter = new StringWriter(); XmlSerializer xml = new XmlSerializer(typeof(klientUpload)); klientUpload upload = new klientUpload(sessionID, (int)operacje.wysylanie, nazwa, (long)(data - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds, rozmiar, 0, hashPliku(katalog + nazwa)); xml.Serialize(stringWriter, upload, names); string str = stringWriter.ToString() + endl; wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length); } catch (Exception) { throw new Wyjatki.BladWysylania("Blad podczas wysylania danych na serwer. Sprawdz polaczenie z internetem, oraz ewentualnie ustaw proxy -- wysylanie zapytanie"); } serwerBase odpSerwera = new serwerBase(); try { StringReader stringReader = new StringReader(""); string str = pobierz(); XmlSerializer xml = new XmlSerializer(typeof(serwerBase)); odpSerwera = (serwerBase)xml.Deserialize(new StringReader(str)); } catch (Wyjatki.BladOdbierania bo) { bo.add("-- odpowiedz wgrywanie plikow"); throw bo; } catch (Exception) { throw new Wyjatki.BladParsowania("Dostano bledne dane od serwera lub nastapil blad programu -- odpowiedz wgrywanie plikow"); } if (odpSerwera.operacja != (int)operacje.wysylanie) return -3; if (odpSerwera.odp == (int)odpowiedzi.plik_istnieje) { string odp; if (MessageBox.Show("Plik " + nazwa + " istnieje na serwerze, czy zastapic go?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) { odp = "ok"; } else { odp = "abort"; } try { StringWriter stringWriter = new StringWriter(); XmlSerializer xml = new XmlSerializer(typeof(klientOdpDownload)); klientOdpDownload kod = new klientOdpDownload(sessionID, (int)operacje.wysylanie, odp); xml.Serialize(stringWriter, kod, names); string str = stringWriter.ToString() + endl; wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length); } catch (Exception) { throw new Wyjatki.BladWysylania("Blad podczas wysylania danych na serwer. Sprawdz polaczenie z internetem, oraz ewentualnie ustaw proxy -- odpowiedz czy plik zastapic"); } try { StringReader stringReader = new StringReader(""); string str2 = pobierz(); XmlSerializer x = new XmlSerializer(typeof(serwerBase)); odpSerwera = (serwerBase)x.Deserialize(new StringReader(str2)); } catch (Wyjatki.BladOdbierania bo) { bo.add("-- odpowiedz na zapytanie czy zastapic"); throw bo; } catch (Exception ex) { throw new Wyjatki.BladParsowania("Dostano bledne dane od serwera lub nastapil blad programu -- odpowiedz na zapytanie czy zastapic" + ex.ToString()); } } if (odpSerwera.operacja != (int)operacje.wysylanie) return -3; if (odpSerwera.odp == (int)odpowiedzi.wszystko_ok || odpSerwera.odp == (int)odpowiedzi.plik_nie_istnieje) { int rozmiarUp = 102400; int rozmiarTmp = rozmiar; FileStream fileStream = new FileStream(katalog + nazwa, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fileStream); int c = 0; try { while (rozmiarTmp != 0) { c++; if (rozmiarTmp < rozmiarUp) rozmiarUp = rozmiarTmp; byte[] bytes = br.ReadBytes(rozmiarUp); wyslij(bytes, rozmiarUp); rozmiarTmp -= rozmiarUp; System.Threading.Thread.Sleep(100); } } catch (Exception) { throw new Wyjatki.BladWysylania("Blad podczas wysylania pliku na serwer -- wysylanie pliku"); } finally { fileStream.Close(); } fileStream.Close(); try { XmlSerializer xml = new XmlSerializer(typeof(klientHash)); klientHash khash = new klientHash(sessionID, (int)operacje.wysylanie, hashPliku(katalog + nazwa)); StringWriter sw = new StringWriter(); xml.Serialize(sw, khash, names); string str = sw.ToString() + endl; wyslij(ASCIIEncoding.ASCII.GetBytes(str), str.Length); } catch (Exception) { throw new Wyjatki.BladWysylania("Blad podczas wysylania pliku na serwer -- wysylanie hasha"); } } return odpSerwera.odp; }