Symulacja sieci TCP/IP

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.
pawel_
Posty: 5
Rejestracja: 17 paź 2007 09:12
Kontakt:

Symulacja sieci TCP/IP

Post autor: pawel_ »

Witam,
Mam pewien problem ze stworzeniem programu w labview 7.0.
Chodzi o to że chcialbym zrobić prostą symulacje sieci opartą na TCP/IP. Jako że moduły TCP są dostępne w standardzie to nie ma z tym problemów. Ale chodzi to że program który "ustawia" polaczenie TCP ustawia je po porcie a nie po adresie IP. polaczenie po IP ustawia tylko "klient" który chce nawiązać połączenie.

Chodzi mi o to że chce stworzyć prostą sieć gdzie będą dwa "komputery" z różnymi adresami IP i jeden serwer. Ma zachodzić wymiana dwu kierunkowa danych.

Czy da się to zrobic w LABview? Siedzie trochę nad tym i jakoś nie widzę rozwiązania.

Za pomoc dzięki:)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Symulacja sieci TCP/IP

Post autor: jogurt_owocowy »

Ma zachodzić wymiana dwu kierunkowa danych.
Między każdym z klientów, a serwerem czy między klientami?
Czy da się to zrobic w LABview?
Jasne. Na razie nie mam możliwości wrzucenia przykładu więc rzucę tylko hasłami na serwerze klocek TCP Listen, w klientach TCP Open. Wieczorem postaram się rozwinąć temat.
Pozdrawiam ]
pawel_
Posty: 5
Rejestracja: 17 paź 2007 09:12
Kontakt:

Re: Symulacja sieci TCP/IP

Post autor: pawel_ »

Chodzi o to żeby były 3 różne VI. Komunikacja może zachodzić tylko komputer <-> serwer nie musi być k.omputer - komputer.

Chciałbym serwerowi nadać to np IP 192.168.0.1 a pozostałym dwóm komputerą kolejne IP.

Proste połącznie z serwera z komupetem wychodzi. Ale już z dwoma pojawiają się problemy a żeby dodać to IP to kombinując kilka godzin wyjść mi nie chciało.

Będę wdzięczny za pomoc.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Symulacja sieci TCP/IP

Post autor: jogurt_owocowy »

Ok, zgodnie z obietnicą...
Serwer:
server.gif
server.gif (8.97 KiB) Przejrzano 6393 razy
Górna pętla czeka nasłuchując połączenia na podanym porcie i gdy takowe "usłyszy" dodaje je do tablicy connections.
Dolna pętla co sekundę wysyła do wszystkich klientów aktualny czas i datę (w końcu jest data in, co nie? :P )
Klient:
client.gif
client.gif (4.08 KiB) Przejrzano 6393 razy
Tu sprawa prostsza: Otwierane jest połączenie do serwera. Ponieważ adres nie jest podany otwierane jest połączenie "do siebie" co daje efekt taki sam jak wpisanie tam swojego adresu IP. Po otworzeniu połączenia klocek TCP Read czeka na dane i jak je otrzyma, wrzuca do kontrolki data out.
W załączniku znajdziesz VI dla serwera i dwóch klientów (identyczny dla obydwu, możesz sobie skopiować go ile razy chcesz i uruchomić każdy z osobna). Oczywiście najpierw odpal najpierw serwer, a potem klientów. (Niestety nie posiadam LV 7.0, ale myślę, że dasz radę to sobie odtworzyć z obrazków).
To nie jest dobra architektura dla tego typu programu. Zrobiłem w ten sposób, żeby zwrócić uwagę na to jak zbierać listę połączeń nie komplikując zbytnio. To jak to ładnie opakować to ewentualnie w kolejnym odcinku.
Pozdrawiam :)
Ostatnio zmieniony 14 lip 2009 09:54 przez jogurt_owocowy, łącznie zmieniany 2 razy.
pawel_
Posty: 5
Rejestracja: 17 paź 2007 09:12
Kontakt:

Re: Symulacja sieci TCP/IP

Post autor: pawel_ »

Kurcze o tą pierwszą pętle się Polska biła:)

Wielkie dzięki ja już takie rozwiązania wymyślałem że głowa boli a tu taka prosta pętelka.

Pozdrawiam
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Symulacja sieci TCP/IP

Post autor: jogurt_owocowy »

Pętelka rzeczywiście jest prosta, ale żeby to jako tako działało to trzeba dodać jeszcze kilka rzeczy. W pierwszej kolejności należy dołożyć usuwanie z tablicy connections połączeń zamkniętych przez klientów (wykorzystując wyjście error klocka TCP Write na serwerze).
Pozdrawiam ]
ODPOWIEDZ