K U R S
Przykłady zastosowań TCP/IP
w mikrokontrolerach, część 3
W poprzednim odcinku kursu
dowiedzieliśmy się, jak można wy-
słać i odebrać wiadomość e mail. To
jednak nie wszystko. Tematyka po-
ruszona w tym odcinku będzie nie
mniej frapująca, bo oto za chwilę
będziemy potrafili wystawić wła-
sny serwer internetowy. Listingi do artykułu
są umieszczone na płycie
CD-EP6/2006B oraz na stronie
Aplikacja pracująca jako
http://download.ep.com.pl
prosty serwer zapytań
mogących obsłużyć do 4
klientów równocześnie
Jak mówi stare przysłowie: co dwie głowy to nie jedna . A gdy
Serwerem można uznać aplikację,
głów tych będą tysiące, a nawet miliony? Aż strach pomyśleć.
która odpowiada na zapytania klien-
Tymczasem taką globalną siłę intelektu mamy dziś w zasięgu
tów. Opisywany w artykule moduł
ręki, ba nawet z niej korzystamy. Wszystko za pośrednictwem
TCP/IP może pracować jako serwer
potrafiący obsłużyć jednocześnie do
terabajtów informacji, które w każdej sekundzie przesyłane są
4 klientów. Klienci mogą wysyłać
olbrzymią siecią informatyczną oplatającą całą kulę ziemską.
zapytania do serwera o czas, datę
oraz żądać rozłączenia. Do symula-
cji klientów zostanie wykorzystany portu wybranego wcześniej instruk-
program easytcpip.exe, który umoż- cją getsocket. Jednocześnie można
liwia dołączenie do 2 klientów. Na otworzyć do 4 gniazd. W pierwszej
list. 5 przedstawiono program reali- fazie działania programu zostają
zujący prosty serwer zapytań. Dzia- otworzone 4 gniazda w trybie ser-
ła on w nieskończonej pętli, przy wera. Warto zauważyć że gniazda
czym w wewnętrznej pętli instrukcją są otwierane po sprawdzeniu czy
socketstat sprawdzany jest status ko- nie ma połączenia z danym gniaz-
lejno każdego z 4 gniazd. Jeżeli sta- dem. Po otwarciu danego gniazda
tus informuje o zamknięciu danego zerowana jest odpowiadająca mu
gniazda (Sock_closed), wykonywana flaga Flags.idx. Po przyłączeniu się Rys. 11. Postać informacji wysłanych
jest instrukcja getsocket, która otwie- klienta do serwera sprawdzany jest przez mikrokontroler do terminala
ra gniazdo o zadanym numerze na stan tej flagi dla gniazda, do które- podczas pracy układu w roli serwera
porcie 5500. Kolejna instrukcja soc- go dołączył się klient. Jeśli jest wy-
ketlisten, której parametrem jest nu- zerowana, serwer wysyła do klienta towany do postaci tekstowej z wy-
mer gniazda, służy do otwarcia da- komunikat powitalny, po czym flaga korzystaniem funkcji Ip2str. W dal-
nego gniazda w trybie serwera. Wy- jest ustawiana, aby komunikat powi- szej części programu rozpoznawane
konanie tej instrukcji powoduje, że talny nie był już wysyłany. Serwer jest polecenie otrzymane od klienta.
wybrane gniazdo będzie nasłuchiwać reaguje na trzy polecenia otrzyma- Jeśli jest to exit, wysyłany jest do
ne od klienta. Są to: klienta komunikat rozłączenia, po
time, date i exit. Jeśli czym wykonywana jest instrukcja
dane zostały wysła- closesocket zamykająca gniazdo, do
ne od klienta z wyko- którego był dołączony klient. Jeśli
rzystaniem instrukcji otrzymano polecenie time, wysyłany
getdstip, do zmien- jest do danego klienta przykładowy
nej LONG zwracany czas, a jeśli było to polecenie data,
jest adres IP klienta. wysyłana jest przykładowa data.
Umożliwia to rozpo- Skonfigurowanie modułu TCP/IP do
znanie klienta, od któ- pracy jako serwer jest dosyć proste.
rego otrzymano dane. Na rys. 10 pokazano widok dzia-
Informacje o kliencie łania programu easytcpip tworzące-
zostają wysłane do go 2 klientów. W programie należy
terminala przez RS232, podać adres IP serwera oraz port,
Rys. 10. Okno programu easytcpip tworzącego 2 przy czym adres IP na którym będą łączyć się klien-
klientów klienta zostaje sforma- ci. Przykładowo po połączeniu wi-
Elektronika Praktyczna 6/2006
104
K U R S
Następuje także łączenie przedstawiono informacje wysłane
otwartego gniazda (klien- przez mikrokontroler do terminala
ta) do serwera o numerze podczas pracy układu w roli klienta.
IP 192.168.1.2 i porcie Po podłączeniu klientów do serwe-
5500. Rezultat otwarcia ra, serwer także wysłał do nich ko-
gniazda, jak i połączenia munikaty powitalne. Widać w nich
są wysyłane do termina- także jakie informacje dany klient
la przez interfejs RS232. otrzymał od serwera po wysłaniu
Po wykonaniu tej pętli zapytania. W przypadku zapytania
Rys. 12. Okno programu easytcpip pracującego z serwerem połączonych who serwer zwrócił do klienta 3
w roli serwera na porcie 5500 będzie 4 klientów. Je- informację o połączonych z nim (ser-
śli z terminala zostanie werem) klientach. Tego typu aplika-
doczny jest komunikat powitalny od odebrany znak o kodzie ASCII 013 cja kliencka może służyć do odbio-
serwera. Klient 1 wysłał zapytanie (Enter), klient 0 i 1 wyślą polecenie ru informacji od serwera, uzyskiwa-
o datę, a drugi klient o czas i żądał time, na które serwer zwróci czas. nych na podstawie zapytań. Serwer
rozłączenia. Na rys. 11 przedstawio- Klient 2 wyśle polecenie exit, na przykładowo może zbierać dane
no informacje wysłane przez mi- które serwer odłączy go od siebie. o temperaturze w kilku miejscach,
krokontroler do terminala podczas Klient 3 wyśle polecenie who, na którą mogą następnie odczytywać
pracy układu w roli serwera. Widać które dostanie odpowiedz o tym, kto klienci.
w nich adres IP dołączonych klien- jest dołączony do ser-
tów oraz wysyłane przez nich do wera. W tym przypadku
serwera zapytania. Tego typu apli- dołączonych będzie 3
kacja może służyć przykładowo do klientów, bo klient 2
zbierania danych, o które może py- wysłał polecenie roz-
tać wielu klientów (jednocześnie 4). łączenia. Do wysyła-
nia poleceń do serwera
Aplikacja pracująca jako wykorzystano instrukcję
klient wysyłający zapytania do tcpwritestr, która różni
serwera się od instrukcji tcpw-
Moduł TCP/IP może pracować rite tym, że przesyła
także jako klient, czyli pełnić funk- dane tekstowe. Przy
cję aplikacji łączącej się do serwe- ostatnim parametrze 255
ra. Klientem można uznać aplikację, instrukcja sama doda
która wysyła zapytania do serwera. do wysyłanych danych
W ramach tego przykładu zostanie znaki potwierdzenia
przedstawiony program, który two- CR+LF. Przy ostatnim
rzy 4 klientów wysyłających do ser- parametrze 0 nie będą
wera zapytania takie jak: time, exit dodawane znaki CR+LF.
lub who. Wysyłanie zapytań jest Po wysłaniu zapytań
możliwe przez RS232 z poziomu do serwera, w kolejnej
terminala. Serwer, do którego łączyć pętli For wykonywanej
się będą klienci został utworzony dla każdego z klientów, Rys. 14. Okno programu easytcpip pracującego
przy pomocy programu easytcpip. sprawdzany jest status z protokołem UDP
Na list. 6 przedstawiono program połączenia i jeśli serwer
realizujący aplikację pracującą jako wysłał do danego klienta dane, są Aplikacja komunikująca
klient. W pierwszej kolejności nastę- one odbierane i wysyłane do termi- się przez protokół
puje otwarcie 4 gniazd kolejno na nala przez RS232 wraz z informa- bezpołączeniowy UDP (prosty
portach 1001, 1002, 1003 i 1004. cją o numerze klienta. Połączenie CHAT)
Jest to zrealizowane w pętli For z klientami kończy się w podobny Protokół UDP umożliwia do-
wykonywanej dla każdego z gniazd. sposób jak w poprzednich aplika- starczanie danych bez gwarancji
cjach, z wykorzystaniem odbioru. Obciążenie przesyłanych
instrukcji closesocket. Na danych informacjami dodatkowymi
rys. 12 pokazano wi- jest niewielkie. Nie ma w tym pro-
dok działania programu tokole żadnego mechanizmu spraw-
easytcpip pracującego dzającego czy aplikacja docelowa
w roli serwera na porcie otrzymała przesyłkę. UDP zapewnia
5500. Widać że przy- wyłącznie prostą sumę kontrolną.
łączyło się do niego 4 Pomimo braku mechanizmu spraw-
klientów, którzy wysłali dzającego protokół UDP ma pew-
wcześniej opisane za- ne zalety, których nie ma protokół
pytania, przy czym po TCP. W sieciach, w których nie ma
Rys. 13. Postać informacji wysłanych przez mi- wysłaniu zapytania exit problemów z dostarczaniem danych,
krokontroler do terminala podczas pracy układu przez klienta 2 został on wykorzystanie protokołu UDP wy-
w roli klient rozłączony. Na rys. 13 wołuje mniejszy ruch. Komunika-
Elektronika Praktyczna 6/2006
105
K U R S
sprawdzane jest czy są jakieś dane
do odebrania. W przypadku wyko-
rzystania tej instrukcji w protoko-
le UDP zwracana wartość zawsze
będzie większa o 8 bajtów (o wiel-
kość nagłówka). Jeśli takowe dane
Rys. 15. Postać informacji wysłanych są, zostają odebrane za pomocą
przez mikrokontroler do terminala instrukcji udpread, której pierwszy
podczas pracy układu z protokołem parametr to numer gniazda, dru-
UDP gim jest zmienna, do której mają
być zapisane odebrane dane. Ostat-
cja przy użyciu UDP nie wymaga ni parametr określa liczbę odbiera-
nawiązywania sesji. Aplikacja zró- nych danych. Odbierane są wszyst-
dłowa jest przygotowana do komu- kie dane łącznie z nagłówkiem,
nikacji z odpowiednim portem apli- który składa się z 8 bajtów. Jeśli
kacji docelowej. Jeżeli potrzebuje odbierane dane są zapisywane do
odpowiedzi, dołącza swój adres zmiennej tekstowej, instrukcja bę-
i port do nagłówka UDP. Nagłówek dzie odbierać dane aż do napotka-
UDP składa się z 8 bajtów, w któ- nia znaków potwierdzenia (CR+LF).
rych znajduje się port docelowy, Instrukcja udpread także rozkodo-
zródłowy, liczba danych i suma wuje nagłówek i poszczególne jego
kontrolna. Popularną aplikacją wy- składowe umieszcza w zmiennych:
korzystującą UDP jest serwer DNS. peersize (liczba danych), peerad-
W opisywanym niżej przykładzie dress (adres IP nadawcy) i Peerport
protokół UDP posłuży do realizacji (port). W programie oprócz danych
prostego CHAT a, w którym jedną otrzymanych, do terminala wysy-
stroną będzie zestaw Easy TCP/IP, łane są także dane o adresie IP
a drugą stroną komputer z urucho- nadawcy pobranym ze zmiennej
mionym programem easytcpip. Ko- peeraddress, który jest dodatkowo
munikacja z Easy TCP/IP będzie formatowany za pomocą instrukcji
się odbywać za pomocą interfejsu Ip2str oraz wykorzystywany port.
RS232 i komputerowego terminala. Podczas wysyłania samych danych
Na list. 7 przedstawiono program do terminala pomijany jest nagłó-
realizujący komunikację z wykorzy- wek. Wysyłane są tylko dane za
staniem bezpołączeniowego proto- nagłówkiem. Program działa w pę-
kołu UDP. W pierwszej kolejności tli, na bieżąco sprawdzając czy są
w programie otwierane jest gniazdo dane do odebrania z terminala lub
instrukcją getsocket wykorzystujące nadawcy z wykorzystaniem UDP.
port 5000. Gniazdo otwierane jest Na rys. 14 pokazano widok dzia-
w trybie Sock_dgrm wymaganym łania programu easytcpip pracują-
przez protokół UDP. Po otwarciu cego z protokołem UDP. W progra-
gniazda program przechodzi do mie należy wpisać adres odbiorcy
wykonywania nieskończonej pę- (zestawu Easy TCP/IP) i przycisnąć
tli, w której znajdują się instrukcje przycisk Setup UDP. Na rys. 15
wysyłające i odbierające dane za przedstawiono informacje wysłane
pomocą protokołu UDP. Wysłanie przez mikrokontroler do terminala
danych z poziomu zestawu Easy podczas pracy układu z protokołem
TCP/IP jest możliwe za pomocą UDP. Na obu rysunkach widać, że
interfejsu RS232 i komputerowego z poziomu programu easytcpip zo-
terminala, a z poziomu komputera stał wysłany tekst test1, a z pozio-
za pomocą programu easytcpip. Po mu programu terminala tekst Test
otrzymaniu danych z komputerowe- OK. Wysłane w obu kierunkach
go terminala potwierdzonych ente- teksty zostały poprawnie odebrane.
rem, są one wysyłane przez UDP Dodatkowo wyświetlana jest infor-
za pomocą instrukcji udpwritestr. macja o adresie IP nadawcy i wy-
Pierwszym parametrem jest ad- korzystywanym porcie. Prosty w re-
res IP odbiorcy (w tym przypadku alizacji bezpołączeniowy protokół
192.168.1.2). Kolejnymi parametra- UDP można wykorzystać w wielu
mi są: port, numer gniazda, nazwa prostych aplikacjach. Przykładowo
zmiennej, z której dane są wysyła- może to być konwerter LAN< >
ne oraz liczba wysyłanych bajtów. RS232.
Przy liczbie bajtów równej 0, wy- Marcin Wiązania, EP
syłane są wszystkie dane zmiennej. marcin.wiazania@ep.com.pl
Za pomocą instrukcji socketstat,
Elektronika Praktyczna 6/2006
106
Wyszukiwarka
Podobne podstrony:
TCP IP i mikrokontrolery, cz 1TCP IP i mikrokontrolery, cz 2TCP IP i mikrokontrolery, cz 4DNS Konfiguracja w sieci TCP IPTCP IP a model OSI,sieci komputerowe,Zestaw protokołów TCP IP (2)TCP IP Księga ekspertaProtokół TCP IP R01 5Bezpieczeństwo w sieciach TCP IPwięcej podobnych podstron