Strona 1 z 1
Symulacja sieci TCP/IP
: 17 paź 2007 09:22
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:)
Re: Symulacja sieci TCP/IP
: 17 paź 2007 09:54
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 ]
Re: Symulacja sieci TCP/IP
: 17 paź 2007 14:08
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.
Re: Symulacja sieci TCP/IP
: 17 paź 2007 19:45
autor: jogurt_owocowy
Ok, zgodnie z obietnicą...
Serwer:
- server.gif (8.97 KiB) Przejrzano 6394 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?
)
Klient:
- client.gif (4.08 KiB) Przejrzano 6394 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
Re: Symulacja sieci TCP/IP
: 17 paź 2007 22:40
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
Re: Symulacja sieci TCP/IP
: 18 paź 2007 08:22
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 ]