[C++ / winsock] Aplikacja Klient - Serwer

0

Witam.

Pytanie nie będzie dotyczyło samej kwestii programowania.

Dokładnie chodzi o to, że mam do napisania aplikację do transferu plików i za bardzo nie rozumiem logiki realizacji takiego programu.

Otóż muszę napisać aplikację typu serwer, która będzie obsługiwała zapytania aplikacji typu klient.

Nie rozumiem tego, gdzie ma znajdować się aplikacja typu serwer ?

Skoro, dwóch użytkowników ma korzystać z jednego programu typu klient i komunikować się z jedną aplikacją serwer - to ta musi znajdować się na jakieś pośredniej maszynie ? A jak to jest z bezpośrednimi połączeniami internetowymi - tak jak przesyłanie plików przez gadu-gadu, czy wykorzystuje jakiś pośredni serwer na którym jeden użytkownik zapisuje plik a drugi ściąga to co zostało zapisane?

Z góry dziękuję za pomoc i prosiłbym o sugestie jaki sposób byłby najlepszy do transferu plików.

Pozdrawiam.

0

hm.. no troche dziwnie.. w Twoim przypadku bardziej bym na P2P spojrzal. ale jak ma byc klient-serwer i odpytywanie, to proponuje tak:

  • serwer jest postawiony u tego kto chce udostepnic plik
  • klient - u udbieracza

serwer obsluguje 'polecenia': listuj z katalogu biezacego, zmien katalog biezacy na X, pobierz plik X

klient - umozliwia wyslanie polecen, wyswietla wynik listowania, jesli poleceniem bylo pobranie - umozliwia wskazanie sciezki dokad zapisac..

czyli taka 'przegladarka' niby-ftp'ow

0

Dziękuję za odpowiedź.

A jeśli nie musiałaby to być aplikacja Klient - Serwer, to P2P również zaimplementuje za pomocą winsock, a jeśli nie to jakie biblioteki mi w tym pomogą?

Myślałem jeszcze nad takim rozwiązaniem :

Użytkownik wysyła plik na serwer (www), drugi natomiast może go stamtąd ściągnąć - pliki i tak będą szyfrowane szyfrem RSA z kluczami, tak więc rozwiązanie mogło by być dobre - chyba za pomocą WinInet można coś takiego zrobić ?

Pozdrawiam.

0

Amirek80: Rozwiązanie, które wymyśliłeś ma jedną duża wade.
Przesyłanie pliku takim systemem trwa 2 razy dłużej. Najpierw user1 musi wysłać plik do serwera, a potem serwer wysłać do usera2. Czyli dla pliku o wielkości np. 100MB łączna ilość wysłanych/odebranych danych(przez wszystkie kompy, które wzięły w tym udział) wynosi 400MB. Przy klasycznym rozwiązaniu wychodzi 2 razy mniej czyli 200MB. No i jeszcze należy dodać, że plik mogą spróbować ściągnąć z serwera i rozszyfrować inni, że nie wspomne o tym, że szyfrowanie/deszyfrowanie też trochę trwa....

0

A można prosić o jakieś namiary na rozwiązania P2P w języku C++?
Jeszcze nie miałem przyjemności pisać aplikacji internetowych, tak więc moja wiedza z tego zakresu jest znikoma.

Z góry dziękuję.

Pozdrawiam.

0

Jedyne co moge polecić to próba znalezienia jakiegoś programu p2p, który jest open source(na linuxa na 100% coś sie znajdzie np. odpowiednik emule; nie wiem jak z win) i przejrzenie jego kodu źródłowego no i oczywiście google ;-)

0

Ok, dziękuję wszystkim za posty.

Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1