Sockety przesyłanie Listy katalogów i plików

0

Witam.Szukam sposobu na wyświetlanie listy katalogów i plików i przesylaniu ich z Serwera Do Klienta za pomocą Socketów.A dokładniej chodzi mi o to aby po wysłaniu komendy od Klienta ze ścieżką do danego katalogu , Serwer robił liste plików i podkatalogów z podanej ścieżki , a potem żeby wszystko zostało wysłane do Klienta, a u Klienta żeby zostało to wyświetlone w ListView ,albo w czymś podobnym.A potem gdy nacisne na któraś pozycje w ListView chciałbym aby Klient wysłał z komende ze ściężką która zaznaczyłem tym razem w ListView i żeby tym razem serwer mi wysłał liste katalogów i plików z tej ścieżkil.I tak w kółko. :P

0

Takie rzeczy to tylko w erze...

0

to w czym problem? Poczytaj o socketach i zrób tak jak napisałeś ;P

0

Ok to poduń mi procedure która zrobi liste plików i przesle ja przez sockety <ort>Od razu</ort> w formie która bede mogł <ort>Od razu</ort> wpisać do LisrView u klienta.Chodzi o jak najszybsze dzialanie.Zeby nie robic takich dlugich zadan jak : zrób liste,zapisz do pliku potem wyslij plik , odczytaj go i wpisz z pliku do list view BO TO DLUGO TRWA. Może coś na Stream.Podpowiedz coś...

0

Ok to poduń mi procedure która zrobi liste plików i przesle ja przez sockety Od razu w formie która bede mogł Od razu wpisać do LisrView u klienta.Chodzi o jak najszybsze dzialanie.Zeby nie robic takich dlugich zadan jak : zrób liste,zapisz do pliku potem wyslij plik , odczytaj go i wpisz z pliku do list view BO TO DLUGO TRWA. Może coś na Stream.Podpowiedz coś...

Może cokolwiek spróbujesz przesłać przez sockety na początek?

0

Umiem obsługiwać Sockety,przesyłać teksty ,pliki itp. Udało mi sie też zrobić tak, że spis katalogów na serwerze wyświetlał sie w Memo, a potem przesyłałem zawartość Memo (SendText) do Klienta i tam też wyświetlała sie zawartość w Memo (Append) .A ja bym to potrzebował przesłać w formacie do ListView lub coś podobnego , Memo sie do tego nie nadaje.
Łatwo wysłać coś z Serwera(Memo) do Klienta(Memo) komendą SendString ,bo to popostu zwykłe stringi.A jak zrobić to w formacie powiedzmy ListView ??

0

ale Ty chcesz gotowca?
Jeśli tak to więcej możesz o nic już tutaj nie pytać.
Wyszukiwanie plików jest na tej stronie i występuj po kilka razy. (FAQ, Arty, Gotowce)

@down:
Znajdź arta o FindFirst, będziesz wiedział o co chodzi ;)

0

Człowieku jakiego gotowca.Jakie wyszukiwanie plików?? Ty umiesz czytać?? Ja nie chce żeby coś mi wyszukiwało plików .Tylko żeby robiło spis katalogów i plików w aktualnej ścieżce .I jakoś w Faq i artach nie było jak sporządzoną liste plików wysłać z serwera do klienta za pomocą sockteów ,ale nie jako pliki. Jak jest ktoś kto wie o co chodzi to niech pomoże jak potrafi.Chodzi mniej wiecej o to co powinno sie znalezc w procedurze wysylajacej przez sockety,aby było można to wysłac w gotowym formacie do odczytanie przez ListView.Dzięki.

0

Ja bym zaczął od przygotowania funkcji listującej wszystkie pliki i katalogi z podanej ścieżki (Root), trzeba pojechać rekurencyjnie w dół drzewka (o ty już było nie raz) - FindFirst() itd - jest nawet art o ile się nie mylę.

Teraz za każdym rekurencyjnym wywołaniem wysyłasz socketem informacje (nazwa pliku, czy co tam chcesz) + informacja w jakim katalogu jest plik (może to nie jest najsprawniejsza metoda, ale będzie działać).

Odczyt będzie polegał na odczytaniu nazwy pliku i katalogu, do którego należy plik - i wg. tego będzie się robić SubItem() .. musisz sobie to oprogramować.

Pozostaje jeszcze kwestia wysyłania nazw plików / katalogów - można użyć jakieś znaki początku, końca (np. znak #0 oznacza, że koniec nazwy pliku, itd.. Do tego dodać jakiś znacznik, że zakończono wysyłanie nazw. Może to wygląda groźnie, ale tak naprawdę kodzik będzie krótki.

Zacznij od listowania plików / katalogów - później wysyłania listy plików, a dalej katalogów i plików w katalogu itd..

0

Jak umiesz wysłać tekst przez gniazdka z Memo1 do Memo2 to spróbuj teraz wysłać jeden wiersz z Listview1 do Listview2.

Oczywiście zakładam to, że potrafisz obsługiwać ten komponent.

//Dopisane:
Funkcje od wylistowania plików w danej ścieżce masz na torry.net w dziale Tips. Wylistuje ci pliki . lub .xxx albo xxx. itd. Jeśli chcesz same foldery to wynik listowania podajesz poprzez ExtractFileDir.
Następna sprawa to wylistowanie wyników do Listview - jak się dodaje rekord masz tu na 4p w szukajce. Potem zostanie już tylko przesłanie listy do kompixa w sieci ale najpierw oczywiście sobie popróbuj na IP = 127.0.0.1. A jak przesyłać tabelę bezpośrednio lub w pliku to zostawiam już twoim ambicjom. ;]

0

Dzięki za podpowiedz (ort! ktos normalny). Ale moim problemem jest własnie to jak przesłać wszystkie linijki na raz przez sockety. Bo jak bede wysylal linijka po linijce to bedzie dlugo trwało.A zależy mi na szybkości odczytu tej listy u klienta.

0

No to możesz wysyłać np. plik przez sieć z listą i gdy skończy wysyłać/odbierać to niech odczyta listę w Listview.
Zapis i odczyt listview z pliku masz na torry.net w Tipsach.

(Wkoncu ktos normalny)

Tu każdy jest normalny tylko inaczej odpowiada.

0

Wiem wiem ,że można zapisać do pliku i wysłać to bym potrafił zrobić, ale ja chcialem obejsc to zapisywanie do pliku ,zeby zyskac na czasie.Dlatego ciagle cisne o to czy ktos wie jak to wysłać <ort>Od razu</ort> bezposrednio, bez zapisywania do pliku i bez wysylania linijka po linijce.

0

Skąd ty wytrzasnąłeś obsługę socketów w postaci przesyłania plików? Jak będziesz normalnie - w sposób podstawowy - je obsługiwał, jedyną operacją zapisu/odczytu jest zapis/odczyt gniazda sieciowego.

Przeczytaj dowolny tutorial, jak przesłać powiedzmy bajt przez socket - w prawie każdym to zajdziesz i nie będzie tam pośredniego zapisywania do pliku.

0

A może zrób sobie tak, że procka listująca pliki i katalogi zapisuje wyniki do np TStringList'y. Dla katalogów możesz dodać '' na końcu (w pliku ten znak nie wystąpi). A jak będziesz miał już listę to zrób Socket.Send(Lista.Text) albo CommaText <- wyjdzie z tego spory string. Na drugim kopie jak otrzymasz tego string'a to wczytaj do analogicznie lista.text := otrzymanytext. A potem iteruj for i = 0 to lista.count - i i dodawaj item'y z odpowiednią ikonką w zależności czy to plik czy katalog. Można by to jeszcze przyśpieszyć, kompresując String'a przed wysłaniem i dekompresując go po odebraniu. Nie mam nic takiego pod ręką ale wiem że takie coś jest proste i możliwe. W każdym razie nie musisz nic zapisywać do pliku.

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