Przykład. Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie:

Podobne dokumenty
Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie w językach

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Komunikacja z użyciem gniazd aplikacje klient-serwer

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

Architektury systemów rozproszonych LABORATORIUM. Ćwiczenie 1

Operacje wejścia/wyjścia (odsłona druga) - pliki

Podstawy programowania w języku C++

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Funkcje zawarte w bibliotece < io.h >

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Funkcje zawarte w bibliotece < io.h >

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Adres IP

3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);

Programowanie i struktury danych

Programowanie współbieżne i rozproszone

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

TCP - receive buffer (queue), send buffer (queue)

Gniazda BSD implementacja w C#

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Platformy Programistyczne Zagadnienia sieciowe i wątki

Podstawy i języki programowania

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Rodzina protokołów TCP/IP. Aplikacja: ipconfig.

Aplikacja wielow tkowa prosty komunikator

Język ludzki kod maszynowy

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Biblioteka standardowa - operacje wejścia/wyjścia

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

Aplikacja wielowątkowa prosty komunikator

Klient-Serwer Komunikacja przy pomocy gniazd

Architektura typu klient serwer: uproszczony klient POP3

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

URL. Budowa URL (ang. Uniform Resource Locator): working#downloading

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

PARADYGMATY PROGRAMOWANIA Wykład 3

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4

Komunikator internetowy w C#

Wykład :37 PP2_W9

Tunelowanie, kapsułkowanie, XDR. 1. Transmisja tunelowa i kapsułkowanie serwery proxy. 2. Zewnętrzna reprezentacja danych XDR.

Plik klasy. h deklaracje klas

JAVA I SIECI. MATERIAŁY:

Pliki wykład 2. Dorota Pylak

The Graphics View Framework. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. he Graphics View Framework - architektura

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Wybrane działy Informatyki Stosowanej

Systemy Rozproszone - Ćwiczenie 6

Sprawozdanie nr 4. Ewa Wojtanowska

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Tworzenie aplikacji rozproszonej w Sun RPC

Aktualizacja SMSFall v Data publikacji:

Sieci komputerowe i bazy danych

Zaawansowane aplikacje internetowe - laboratorium

Algorytmy i Struktury Danych. Anna Paszyńska

Oprogramowanie komunikacyjne dla Internetu rzeczy Laboratorium nr 4 komunikacja unicastowa IPv6

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Podstawowe typy serwerów

Programowanie rozproszone w języku Java

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

DotGadu Tutorial v2008_08_25 Dominik Cebula

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Programowanie obiektowe

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Programowanie w Internecie

Bezpieczne uruchamianie apletów wg

Zaawansowane techniki programowania C#

INFORMATYKA Studia Niestacjonarne Elektrotechnika

PARADYGMATY PROGRAMOWANIA Wykład 4

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Sieci komputerowe i bazy danych

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sieci Komputerowe i Bazy Danych

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Instrukcja obsługi serwera FTP v

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Transkrypt:

Adres internetowy klasa wxipv4address - wymaga #include <wx/socket.h> Najważniejsze metody: bool Hostname(const wxstring& hostname) ustawia nazwę domenową hosta lub adres IP w notacji kropki: a.b.c.d bool Hostname() zwraca nazwę domenową hosta, gdy zna jego adrees IP wxstring IPAddress() zwraca adres IP hosta w notacji kropki: a.b.c.d, gdy zna jego nazwę domenową bool Service(const wxstring& service) ustawia wybraną usługę, tzn numer portu zwiazanego z usługą bool Service(unsigned short) - ustawia numer portu związanego z usługą. unsigned short Service() - zwraca numer portu związanego z usługą. Przykład Podaj nazwę domenową hosta a odczytaj jego adres IP, lub odwrotnie: wxipv4address h; // obsługa zdarzenia OnEnter komponentu WxEdit1 h.hostname(wxedit1->getvalue()); wxstring ip = h.ipaddress(); WxEdit2->SetValue(ip); // obsługa zdarzenia OnEnter komponentu WxEdit2 h.hostname(wxedit2->getvalue()); wxstring nazwa = h.hostname(); WxEdit1->SetValue(nazwa); // podajesz nazwę hosta jako wxstring // odczytujesz adres IP jako wxstring w notacji kropki // podajesz nazwę hosta jako adres IP w notacji kropki // odczytujesz nazwę domenową jako wxstring Aby odczytać lokalny adres IP mojego komputera, najprościej spróbować połączyć się z jakimś serwerem: utworzyć gniazdo klienckie, połączyć się i odczytać parametry lokalnego adresu. wxipv4address lokalny; h.service(80); wxsocketclient klient; // wxipv4address h; jak wyżej // ustaw port dla usługi serwera, np. 80 dla HTTP // utwórz gniazdo klienta if (klient.connect(h)) klient.getlocal(lokalny); int port = lokalny.service(); // klient łączy się // można odczytać adres IP lokalnego gniazda // w tym: numer portu komunikacyjnego WxStaticText5->SetLabel(lokalny.IPAddress()+" : "+ wxstring::format("%i",port)); W przykładzie zastosowano klasę wxsocketclient, służącą do tworzenia gniazd komunikacyjnych. Jej metody: Connect(wxSockAddress& addr) - nawiązuje połączenie z podanym adresem IP. GetLocal(wxSockAddress& addr) zwraca lokalny adres IP oraz numer portu komunikacyjnego. Klasa wxsockaddress jest klasą bazową dla wxipaddress, a ta jest bazową dla wxipv4address.

wxurl klasa pochodna od wxuri, stosowana do pobierania danych z URI (Uniform Resource Identifier). Dane są pobierane za pomocą strumienia obiektu klasy wxinputstream. Należy: podać adres zasobu zainicjować strumień odczytać rozmiar zasobu w bajtach pobrać ze strumienia wskazaną liczbę bajtów do bufora tekstu lub do obrazu #include <wx/url.h> // ładowanie tekstu z url void Okno::WxButton1Click(wxCommandEvent& event) { wxurl adres = WxEdit1->GetValue(); if (adres.geterror() == wxurl_noerr) { wxinputstream *wejscie = adres.getinputstream(); //można w 2 krokach: wxinputstream *wejscie ; wejscie = adres.getinputstream(); int rozmiar = wejscie->getsize(); char *c = new char [rozmiar]; wejscie->read(c,rozmiar); c[rozmiar] = \0 ; WxEdit2->SetValue(c); delete c; // odczyt rozmiaru zasobu // przygotowanie bufora danych // pobieranie danych // zakończenie łańcucha danych // ładowanie obrazka z url void Okno::WxButton2Click(wxCommandEvent& event) { wxurl adres = "http://"+wxedit3->getvalue(); if (adres.geterror() == wxurl_noerr) { wxinputstream *wejscie = adres.getinputstream(); int rozmiar = wejscie->getsize(); // odczyt rozmiaru zasobu WxStaticText4->SetLabel(wxString::Format("%i",rozmiar)); wxinitallimagehandlers(); wximage obraz = wximage(*wejscie, wxbitmap_type_png); // pobór danych wxclientdc g(this); g.drawbitmap(obraz,300,100); trzeba określić format graficzny pliku!

wxftp obiekt tej klasy umozliwia nawiązanie połaczenia z serwerem FTP, zalogowanie użytkownika i wykonywanie podstawowych operacje na katalogach i plikach: wxftp::chdir wxftp::mkdir wxftp::rmdir wxftp::pwd wxftp::rename wxftp::rmfile wxftp::setuser wxftp::setpassword wxftp::fileexists wxftp::getfilesize wxftp::getdirlist wxftp::getfileslist wxftp::getoutputstream wxftp::getinputstream Przykład Nawiązanie połaczenia, przejście do podkatalogu, lista zawartości katalogu, pobranie pliku index.html #include <wx/protocol/ftp.h> wxftp f; f.setuser("rpluta"); f.setpassword("password"); if ( f.connect("student.zsl.gda.pl") ) { // parametry logowania // łączenie z serwerem if ( f.chdir("/www") ) { // przykład operacji na katalogach: przejdź do podkatalogu www wxarraystring A; // pobranie zawartości bieżącego katalogu z serwera if (f.getfileslist(a)) WxListBox1->Set(A); // i wyświetlenie w kontrolce WxListBox1 wxstring plik = "index.html"; int rozmiar = f.getfilesize(plik); // odczyt rozmiaru pliku wxinputstream *in = f.getinputstream(plik); // inicjacja strumienia char *data = new char[rozmiar]; if (!in->read(data, rozmiar) ) WxEdit1->SetValue( błąd ); // pobranie danych else WxEdit1->SetValue(data); delete [] data;

Podsumowanie strumieni binarnych Strumienie - służą do ujednolicenia operacji we/wy na różnych platformach. Podstawowe klasy: wxstreambase, wxstreambuffer, wxinputstream, wxoutputstream, klasy dla obsługi konkretnych rodzajów we/wy wxsocketin/outputstream, wxdatain/outputstream, wxfilein/outputstream Konstruktor strumienia inicjuje bufor danych i otwiera dostęp do pliku. // z zasobu URL wxurl adres = http://rpluta.student.zsl.gda.pl/robol.txt ; wxinputstream *wej = adres.getinputstream(); int rozmiar = wej->getsize(); char *dane = new char [rozmiar]; wej->read(dane,rozmiar); // użyj dane delete [] dane; // odczytaj rozmiar zasobu w bajtach // dane tekstowe wximage obraz = wximage(*wej,wxbitmap_type_bmp,-1); // dane graficzne wxclientdc g(this); // typ grafiki trzeba określić! g.drawbitmap(obraz,300,100); // z serwera FTP wxftp f; // f.setuser(), f.setpassword(), f.connect(serwer) int rozmiar = f.getfilesize(plik); wxinputstream *wej = f.getinputstream(d); char *dane = new char[rozmiar]; if (!wej->read(dane, rozmiar) ) wxlogerror("read error"); else // użyj dane delete [] dane; // z pliku lokalnego binarnego (nie tekstowego): czytanie i zapis wxfileinputstream wejscie("plik"); wejscie.read(&data, rozmiar); wxfileoutputstream wejscie("plik"); wejscie.write(&data, rozmiar); Dluznik d; std::vector <Dluznik> D; wxfileinputstream wejscie("baza.aaa"); int i=0; int rozmiar = sizeof(d); while (!wejscie.eof()) { wejscie.read(&d,rozmiar); if (strlen(d.ksywa)>0) { WxListBox1->Append(d.ksywa); D.push_back(d); i++; wxfileoutputstream wyjscie("baza.aaa"); int rozmiar = sizeof(d); for (int i=0; i<d.size(); i++) wyjscie.write(&d[i],rozmiar); wyjscie.close(); class Dluznik { public: char ksywa[20]; wxstring ks = WxEdit1->GetValue(); double kwota; strcpy(d.ksywa, ks.c_str());