Problem z TCP
Problem z TCP
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??
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??
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Problem z TCP
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
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
Re: Problem z TCP
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.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Problem z TCP
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
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
Re: Problem z TCP
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
Pozdr
Mariusz
- wino
- Posty: 549
- Rejestracja: 23 gru 2005 00:00
- Wersja środowiska: Nie mam LabVIEW
- Lokalizacja: Kraków
Re: Problem z TCP
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
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
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Problem z TCP
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
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
Re: Problem z TCP
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?
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Problem z TCP
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.
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.
Re: Problem z TCP
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.
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.
-
- Administrator
- Posty: 1315
- Rejestracja: 30 lip 2003 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Ruda Śląska
- Kontakt:
Re: Problem z TCP
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
Czy próbowałeś bawić się programikiem który wysyła pingi ?
W dziale z plikami jest m.in. taki: RAW Socket Ping.
bogdani
Re: Problem z TCP
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??
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Problem z TCP
"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"?
??
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"?
Re: Problem z TCP
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
Re: Problem z TCP
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.
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.