Problem z TCP

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Problem z TCP

Post autor: mariuszXX »

Witam
Mam problem. Musze zrobić w LV aplikację, która będzie sprawdzała jakość łącza sieciowego. Tzn mam do dyspozycji dwa kompy w sieci, na obu moge mieć LV, z jednego wysyłam pingi, a drugi ma mi odpowiadać. Mam zmierzyć czasy odpowiedzi. To wszystko ma być w Labview.
Nie wiem jak nawiązać połączenie TCP przy pomocy dostępnych w LV bloczków. Czy możecie mi jakoś pomóc??
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: jogurt_owocowy »

Twój problem nie wygląda na trudny.
W helpie są bardzo ładne przykłady jak używać bloczków do TCP. Jest tam bodajże jakiś prosty czat chyba zrobiony. Wymagają one pewnego wgryzienia się w nie, bo jak na przykład są trochę za bardzo zamotane, ale da się - spróbuj. Jak dalej będziesz miał problemy to pisz. W tej chwili nie mam dostępu do LV, w sobotę odpiszę coś więcej.

Pozdro
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

Poczytałem sobie helpów troche ale jakoś za słabo znam LV i nie potrafie ułozyć tych bolczków i połączyć tak, żeby mi to działało. Muszę bardziej się wgryźć w LV. Poćwiczę jeszcze, ale chyba będę potrzebował pomocy.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: jogurt_owocowy »

Jak będę miał dostęp do LV(pewnie sob) to coś poradzimy. Tak "na gębę" ;) to ciężko, ale... Załóżmy, że z jednego kompa(klient) na drugi(serwer) chcesz wysłać string "ala ma kota".
Klient: Bloczek TCP Open Connection - Do wejścia dołącz adres IP(na początek wpisz swój). Pozostałe wejścia zostaw niepodłączone- przyjmą "bezpieczne" domyślne wartości. Bloczek TCP Open Connection otwiera połączenie i zwraca odnośnik połączenia(referencję). Ten odnośnik dołącz do stosownego wejścia(chyba lewe-górne) bloczka TCP Write, który pozwala na wysłanie danych. Wyjście błędów TCP Open Connection dołącz do wejścia błędów TCP Write. Do wejścia data TCP Write podłącz stałą ze stringiem "ala ma kota". Z paletki weź jeszcze jeden bloczek - TCP Close Connection służący do "kulturalnego" zamykania połączenia. Do jego wejść podłącz odnośnik połączenia i wyjście błędów TCP Write, a na jego wyjściu błędów: Create->Indicator.
Serwer: Na diagram wstaw TCP Listen - bloczek "słuchający" czy ktoś nie próbuje nawiązać z nim połączenia (właśnie za pomocą TCP Open Connection), jego wyjścia podłącz do wejść TCP Read, bloczka czytającego przychodzące dane, na jego wyjściu data Create->Indicator, a odnośnik i błędy do TCP Close Connection jak w kliencie.
TCP Read ma dwa ważne dla jego działania wejścia(niekoniecznie pamiętam dokładne nazwy). bytes to read-liczba bajtów do czytania(ustaw np. 100) mode - tryb czytania danych przychodzących, ustaw na Immediately(Create->Constant).
Serwer różni się od klienta tym, że zamiast TCP Open Connection ma TCP Listen no i oczywiście zamiast TCP Write - TCP Read. Teraz odpal najpierw serwer, a potem klienta. Jak wszystko dobrze połączysz to serwer powinien odebrać wysłany przez klienta string.
Nie dam głowy że to wszystko będzie działać, bo tak z pamięci to ciężko, ale mam nadzieję że coś pomogłem. Owocnych prób;)
Pozdro
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

Twoja instrukcja była prawie idealna !!! Udało się. Dzięki!!! Jeszcze porty trzeba było ustawić. Teraz jeszcze jedna sprawa. Jak w takim układzie zmierzyć czas przesłania wiadomości. Co tu wstawić i jak to zrobić?? Sorki za takie lamerskie pytania, ale jestem zupełnie początkujący i dopiero się uczę.
Pozdr
Mariusz
Awatar użytkownika
wino
Posty: 549
Rejestracja: 23 gru 2005 00:00
Wersja środowiska: Nie mam LabVIEW
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: wino »

witam

miałem pewien pomysł ale nie wypalił,
ale nasuwa mi sie inne rozwiazanie:
proponuje wysłanie z serwera do klienta, potem ten sam pakiet wyślij w druga stronę i podziel czas tej operacji przez dwa:)

zmierz też czas operacji które zajdą w klience i wyślij go w nastepnej sesji do serwera!

wszystkie operacje związane z czasem znajdziesz w Function->Time&Dialog
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: jogurt_owocowy »

Jak zmierzyć czas trwania jakiejś operacji poczytaj sobie tutaj.
U Ciebie operacją będzie wysłanie zapytania do serwera, oczekiwanie na odpowiedź i odczytanie tejże. Dobry pomysł podrzucił Ci wino, żeby zmierzyć czas "obsługi zapytania" w serwerze i dołączyć taką informację do odpowiedzi w celu modyfikacji pomiarów. Najpewniej nie będzie to miało znaczenia, ale lepiej dmuchać na zimne.

Pozdrawiam
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

Nie moge sobie poradzic z pomiarem tego czasu. Jeszcze jeden problem: jak wyslac zwykly plik, ktora ikonke wykorzystac i jak ustawic? Tekst z pliku juz mi sie udalo wyslac i zapisac do innego pliku, ale z calym plikiem nie potrafie sobie poradzic. No i co z tym nieszczesnym czasem?
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: jogurt_owocowy »

Jeśli chodzi o pierwsze pytanie to odpowiedź w załączniku.
A jeśli chodzi o drugie to czym się różni według Ciebie "tekst z pliku" od "całego pliku"? Wczytaj zawartość pliku, nie przejmuj się że tekst z niego odczytany może być bez sensu i z "krzaczkami", tylko po prostu wyślij go tak jak tekst "pytanie" lub "odpowiedź" na rysunkach.
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

No i nawet mi to zadzialalo. Tylko teraz dziwi mnie jeden fakt, a mianowicie to , ze czas po jakim przychodzi odpowiedz, to ok 1500ms (+/-10), przy czym opoznienie ustawilem na 1ms. Wydaje mi sie, ze 1500ms to troche za duzo. Normalne pingi dochodza w kilka ms. Daloby sie to jakos przyspieszyc?? Czy to LV jest takie wolne?? Czy moze TCP?? Ping nie uzywa TCP tylko ICMP chyba. A moze sprobowac po UDP??
Druga sprawa to struktury sequence: jak to polaczyc w jedna calosc. U mnie te klatki sa podzielone i kazda jest oddzielnie. Moze to tez wplywa na uzyskany czas.
bogdani
Administrator
Posty: 1315
Rejestracja: 30 lip 2003 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Ruda Śląska
Kontakt:

Re: Problem z TCP

Post autor: bogdani »

Witaj

Czy próbowałeś bawić się programikiem który wysyła pingi ?
W dziale z plikami jest m.in. taki: RAW Socket Ping.

bogdani
Ktoś ci pomógł na forum? Podziękuj dając pochwałę.

Obrazek Obrazek Obrazek
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

Nie bawilem sie tym programikiem. Nie wiem, czy mi to pojdzie na LV 6.1. Ale sprawdze. Czym sie rozni LV 7.0 lub 8.0 od 6.1 jesli chodzi o mozliwosci pracy w sieci??
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Problem z TCP

Post autor: jogurt_owocowy »

"U mnie te klatki sa podzielone i kazda jest oddzielnie."
??
Jak to są odzielnie? Akurat w przypadku takiego programu jak na rysunkach to bez znaczenia, ale te klatki są raczej po to, żeby były razem;)
Weź z paletki Stacked Sequence, kliknij na niej prawym i daj Add Case After/Before. O to chodzi?

"opoznienie ustawilem na 1ms"
Jeśli robisz te pomiary naprawdę tj. na dwóch różnych kompach to ustaw na 0 albo po prostu wyrzuć tą klatkę. Ona ma tylko symulować opóźnienie łącza przy pingowaniu samego siebie.

"Tylko teraz dziwi mnie jeden fakt, a mianowicie to , ze czas po jakim przychodzi odpowiedz, to ok 1500ms (+/-10)"
To raczej ani nie wina LabView, ani TCP. A jakie są "warunki eksperymentu"?
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Problem z TCP

Post autor: Gość »

W 2004 roku był na ten temat artykuł w miesięczniku Pomiary Automatyk Robotyka. Pełny tekst pod adresem http://www.ime.uz.zgora.pl/konf/sp04/15 ... Kazana.pdf
mariuszXX
Posty: 8
Rejestracja: 08 mar 2006 00:00

Re: Problem z TCP

Post autor: mariuszXX »

Witam. Dawno mnie tu nie było, ale sytuacja mnie zmusiła i znowu jestem.
Mam pytanie: jak w takim układzie j.w. przesłać plik, a najlepiej, żeby to był plik binarny. Chce za pomocą połączenia TCP w LV przesłać plik z kompa na kompa po sieci.
ODPOWIEDZ