logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C#] - Przesył danych/plików pomiędzy komputerami

bubu2606 03 Wrz 2013 13:14 8433 59
Najlepsze odpowiedzi

Jak najprościej zrealizować automatyczny przesył plików TXT/XLS z wielu komputerów do jednego serwera przez Internet?

Najprościej będzie użyć FTP: postaw jeden serwer FTP na komputerze zbierającym dane albo na hostingu, a na stacjach roboczych wysyłaj pliki skryptem batch uruchamianym z Harmonogramu zadań, korzystając z wbudowanego klienta `ftp.exe` w Windows [#12698206][#12699237][#12721703] Jeśli komputery są w różnych miastach, traktuj je jako zewnętrzne — dla takiego scenariusza FTP jest najmniej problematyczne, a w sieci lokalnej najprostsze byłoby zwykłe udostępnienie folderu [#12700411][#12700516] Serwer musi być poprawnie skonfigurowany: konto musi mieć prawa zapisu, a na routerze trzeba mieć przekierowane porty używane przez FTP [#12706145][#12721752] Jeśli chcesz wysyłać pliki na żądanie, klient musi jednocześnie nasłuchiwać jak serwer i odbierać takie polecenie [#12698454][#12709299] Alternatywnie można wykupić tani hosting/FTP albo wysyłać dane mailem, ale w wątku FTP został wskazany jako najpraktyczniejsze rozwiązanie dla plików [#12729606][#12725074]
REKLAMA
  • #1 12697909
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Witam,
    mam zamiar napisać aplikację do przesyłania danych/plików pomiędzy komputerami. W sieci jest kilka rozwiązań i nie wiem na które się zdecydować. Główne założenia do przesył danych w postaci pliku txt lub xls. Przesył odbywałby się z kilku komputerów na jeden komputer.
    Zastanawiałem się nad TCP/IP na podstawie poniższego linku
    Link
  • REKLAMA
  • #2 12698009
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    A gdzie pytanie?
  • REKLAMA
  • #3 12698044
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Moje pytanie to: w jaki najprostszy sposób mogę to zrealizować i którą metodę wybrać? (Przesył danych/plików z kilku komputerów do jednego).
  • #4 12698065
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    Moje pytanie to: w jaki najprostszy sposób mogę to zrealizować i którą metodę wybrać? (Przesył danych/plików z kilku komputerów do jednego).
    Udostępnić na 1 komputerze folder do zapisu.
    Dlaczego chcesz zrobić to programowo? Do czego ma to służyć?
    Czy komputery będą w sieci lokalnej - czy poza nią?
    Czy ten "udostępniony komputer" będzie w sieci lokalnej czy poza nią?
  • #5 12698129
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Komputery będą w kilku miastach i będą zbierały dane w formie txt lub xls. Dane te mają być przesyłane do jednego komputera raz w tygodniu (automatycznie), dlatego chcę zrobić to programowo. Przesył będzie odbywał się poprzez Internet. A komputery będą w danej sieci lokalnej jak i komputer który ma zbierać dane (oczywiście chodzi tu o sieć lokalną dla danej lokalizacji PC).
  • #6 12698206
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    Dane te mają być przesyłane do jednego komputera raz w tygodniu (automatycznie), dlatego chcę zrobić to programowo. Przesył będzie odbywał się poprzez Internet.
    Proponuję wysyłanie plików z określonego folderu przez skrypt umieszczony w harmonogramie zadań do serwera FTP.
    https://www.elektroda.pl/rtvforum/topic2547182.html
  • #7 12698325
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    A jak coś takiego napisać, ten skrypt? I czy da się go uruchomić przy pomocy C#
  • REKLAMA
  • #8 12698359
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    I czy da się go uruchomić przy pomocy C#
    Nie wiem czemu się upierasz na to C#. Możesz oczywiście zrobić połączenie sobie klient/serwer przy pomocy TCP Socket's, ale czy nie prościej :
    1. postawić zwykły FTP,
    2. udostępnić go na zewnątrz w routerze rozdającym Internet
    3. pozakładać skrypty na komputerach roboczych
    ?
    Opis jak napisać taki skrypt - znajdziesz w podanych w tym temacie linkach.
    Jest to o niebo prostsze - niż stworzenie aplikacji, którą chcesz napisać w C#.
    Ja też lubię C#, ale czasem nawet nie warto odpalać Visual Studio... jeśli mamy do wykonania takie zadanie.
  • #9 12698418
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Czyli mogę w aplikacji w C# tworzyć pliki a za pomocą skryptów je wysyłać? A czy istnieje możliwość przesyłania tych danych na żądanie, czyli wysyłam do wszystkich polecenie a komputery robocze mi wysyłają pliki? A jak takie rozwiązanie będzie sprawdzało się dla kilkudziesięciu komputerów? I jeszcze mam pytanie w czym taki skrypt napisać? Jaki program polecisz czy po prostu start/uruchom/CMD
  • #10 12698454
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    A czy istnieje możliwość przesyłania tych danych na żądanie
    Oczywiście, że istnieje - ale w tym celu na komputerach powinien być zainstalowany serwer odpowiadający na owe żądanie.
    bubu2606 napisał:
    I jeszcze mam pytanie w czym taki skrypt napisać?
    W notatniku.

    Napisz
    - do czego ma to służyć,
    - skąd pochodzą te dane (pliki) - z jakiegoś programu,
    - czy pliki są dostępne od razu, czy trzeba je wygenerować/zapisać?
  • #11 12698633
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    To ma służyć do informowania o ilości przyciśnięć danego przycisku. Dane będą zbierane w pliku txt lub w xls (raczej to drugie rozwiązanie). Plik tworzony jest (dane zapisywanie są) na bieżąco i zapisywany w folderze DANE na dysku C. Tą aplikację napisałem w C#. Chodzi mi o zbieranie danych z komputerów na jeden będący serwerem. Pliki wysyłane ze stacji roboczych będą konkretnego dnia np w poniedziałek lub właśnie na wywołanie z serwera.
    I w jaki sposób rozwiązać to tworząc skrypt na stacji serwer i na stacjach roboczych? Chyba, że w takim wypadku łatwiej będzie to zrobić w C#.
  • #12 12698785
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    To ma służyć do informowania o ilości przyciśnięć danego przycisku. Dane będą zbierane w pliku txt lub w xls (raczej to drugie rozwiązanie). Plik tworzony jest (dane zapisywanie są) na bieżąco i zapisywany w folderze DANE na dysku C.
    Czy to ma być coś w rodzaju keylogger'a? Chodzi o jakiś konkretny przycisk na klawiaturze, czy o coś innego?
  • #13 12698997
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Coś w rodzaju keylogger`a ale informacje będą przesyłanie z uP do komputera.

    Dodano po 31 [minuty]:

    Znalazłem gotowe programy TFTP serwer (czy chodziło Ci o gotową aplikację).
    Link

    Może masz namiary na przykładowe rozwiązania lub materiały z których można skorzystać do napisania własnej aplikacji?
  • REKLAMA
  • #14 12699237
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Najpierw przetestuj przesyłanie plików. Zainstaluj serwer, skonfiguruj go itd..
    Następnie zajrzyj na stronę, którą podałem w linku z początku tematu. Tam dowiesz się jak z poziomu samego systemu - (bez instalowania czegokolwiek) za pomocą zwykłej komendy ftp (skryptu wywoływanego z pliku batch) wysłać z lub pobrać plik ze zdalnego FTP.
    Serwer zainstaluj jeden - na komputerze wspólnym - najmniej roboty.


    Jeśli jednak chcesz aby:
    bubu2606 napisał:
    A czy istnieje możliwość przesyłania tych danych na żądanie, czyli wysyłam do wszystkich polecenie a komputery robocze mi wysyłają pliki?
    - wtedy:
    Zainstaluj na stacjach roboczych tftp, a na serwerze skrypt windowsowego ftp (plik batch) odbierający z tych serwerów żądane pliki.
  • #15 12700396
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    A jeżeli stacje robocze będą podpięte do routera?
  • #16 12700411
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    A jeżeli stacje robocze będą podpięte do routera?
    Pytałem się wcześniej:
    mickpr napisał:
    Czy komputery będą w sieci lokalnej - czy poza nią?
    To jak w końcu to będzie?
    W sieci lokalnej najlepszym rozwiązaniem będzie udostępnianie folderu.
  • #17 12700421
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Właśnie może być różnie. Jeden komputer może być podpięty do switcha a kolejny w innym mieście do routera
  • #18 12700516
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    Właśnie może być różnie. Jeden komputer może być podpięty do switcha a kolejny w innym mieście do routera
    Więc traktuj wszystkie jako "zewnętrzne". Dostęp przez FTP będzie najmniej problematyczny. Chyba - że ktoś widzi inne rozwiązanie.
  • #19 12700524
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    A czy są tftp do zastosowań komercyjnych bo nie znalazłem żadnego tylko niekomercyjne..
  • #20 12700542
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    A czy są tftp do zastosowań komercyjnych bo nie znalazłem żadnego tylko niekomercyjne..
    A chcesz koniecznie płacić za coś, co jest darmowe?
    Klient TFTP jest wbudowany w Windows, Serwer znajdziesz "open source" - np. tutaj: http://www.jounin.net/tftpd32.html , ale są i inne.
    P.S.
    Właśnie jestem na etapie tworzenia takiego TFTP dla swojego projektu (LPC1768/FreeRTOS/LwIP).
  • #21 12700827
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Spróbowałem połączenia z wykorzystaniem C#
    na podstawie

    Link
    o ile na jednym komp działa prawidłowo to na drugim nie działa..

    Dodano po 2 [minuty]:

    Rozumiem że za pomocą tego programu mogę zrezygnować z systemowego klienta w windowsie?
  • #22 12705712
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Witam,
    postawiłem serwer na IIS Windowsa jednak mam problem z łączeniem się z innego miejsca na ten serwer (inne miasto). Mam komputer(serwer) podpięty pod router i zmienne IP w związku z tym. W jaki sposób to obejść??
  • #23 12705772
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    Mam komputer(serwer) podpięty pod router i zmienne IP w związku z tym. W jaki sposób to obejść??
    Zmienne IP routera czy serwera?
  • #24 12705799
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    router przydziela dynamiczne IP dla mojego komputera (wewnętrzny adres). nie mogę przez to dostać się na serwer z innej miejscowości. Dostaję się jednak jak podam adres zewnętrzny
  • #25 12706145
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    router przydziela dynamiczne IP
    A co stoi na przeszkodzie, żeby adres był stały?
    Poza tym - na routerze powinieneś mieć przekierowane porty, których twoja aplikacja używa.
    Chyba o tym wiesz?
  • #26 12708982
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Mam jeszcze pytanie co do udostępniania plików przez klienta serwerowi. Bo w normalnej sytuacji klient loguje się na serwer i widzi pliki udostępnione. Teraz mam pytanie czy przy połączeniu klienta z serwerem,serwer mógłby widzieć udostępnione pliki przez klienta?? Czy da się coś takiego zrobić??
  • #27 12709299
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    Tak, Wystarczy że klient będzie jednocześnie serwerem, a serwer klientem.
  • #28 12709797
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Głownie chodzi mi o coś takiego (koncepcja):
    jest serwer na który automatycznie jeżeli jest dostęp do Internetu logują się klienci.
    Serwer ma możliwość przesyłania danych do zalogowanych klientów (czy można przesłać dane np do 10 klientów na raz do konkretnego folderu).
    Klienci jednego dnia w tygodniu z automatu (jeżeli serwer jest w sieci) przesyłają do niego dane. I tu mam pytanie: czy da się tak zrobić że załóżmy klient automatycznie loguje się do serwera w poniedziałek o 9 rano i przesyła mu dane z zeszłego tygodnia. Jeżeli nie ma serwera w sieci lub klient nie jest w sieci to po wykryciu serwera przesyła te dane (nawet następnego dnia). Czy IIS systemowe pozwala na coś takiego?
  • #29 12717709
    bubu2606
    Poziom 15  
    Posty: 186
    Ocena: 2
    Witam,
    mam problem z wysyłaniem plików na serwer za pomocą skryptu.
    [C#] - Przesył danych/plików pomiędzy komputerami

    chodzi mi o to że program wisi w momencie przesyłania danych i na serwerze zostaje utworzony plik ale jest pusty.

    używam jako serwer CesarFTP.
    Nie potrafię tego rozgryźć..

    poniżej skrypt:
    
    
    @ftp -i -s:"%~f0"&GOTO:EOF
    open 192.168.1.4
    login
    password
    lcd c:\TFTP
    cd FTP
    ascii
    mput upload.txt
    bell
    disconnect
    bye
  • #30 12717990
    mickpr
    Poziom 39  
    Posty: 4630
    Pomógł: 579
    Ocena: 295
    bubu2606 napisał:
    Nie potrafię tego rozgryźć..

    Wbrew pozorom jest to bardzo proste.
    Pierwsza linijka - wywołuje program ftp z kolejnymi parametrami z tego skryptu.
    Druga linijka - łączy z konkretnym serwerem FTP
    w miejscu 'login' i 'password' powinieneś mieć użytkownika, który istnieje i ma prawo do zapisu w danym folderze FTP.
    Skrypt poza tym jest dobry - problemów szukaj po stronie serwera FTP.

Podsumowanie tematu

✨ Użytkownik planuje stworzyć aplikację do przesyłania danych i plików (txt, xls) z kilku komputerów do jednego serwera, działającego przez Internet. W dyskusji poruszono różne metody realizacji tego zadania, w tym wykorzystanie protokołu FTP oraz skryptów do automatyzacji przesyłania plików. Użytkownicy sugerowali, aby zamiast tworzyć aplikację w C#, rozważyć użycie gotowych rozwiązań, takich jak serwery FTP, oraz skrypty do przesyłania plików. Wskazano również na możliwość użycia baz danych do centralizacji danych, co może być bardziej efektywne w dłuższej perspektywie. Problemy związane z dynamicznymi adresami IP oraz konfiguracją routerów również były omawiane, a użytkownicy dzielili się doświadczeniami z różnymi serwerami FTP, takimi jak CesarFTP i FileZilla.
REKLAMA