Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

010990001 - Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction.

Samankaltaiset esitykset


Esitys aiheesta: "010990001 - Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction."— Esityksen transkriptio:

1 010990001 - Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction

2 Yleistä Kirjassa mainitut lähdekoodit löytyvät osoitteesta: www.unpbook.com/src.html Haetaan ja puretaan komennoilla: wget http://www.unpbook.com/unpv13e.tar.gz tar zxf unpv13e.tar.gz Koodi löytyy nyt unpv13e -alihakemistosta cd unpv13e

3 Yleistä unpv13e/README kertoo kääntämisohjeet:./configure Käännetään peruskirjasto cd lib && make && cd - cd libfree && make && cd –

4 socket & TCP/IP socket-ohjelmointirajapinnat toimivat verkko-ohjelmoinnissa TCP/IP-mallin termein yhteyksinä sovelluskerrokselta kuljetuskerrokselle kirjassa käsitellään sekä TCP:n ja UDP:n osaavien socketien käyttöä ja jopa IP- kerroksen jättämistä välistä

5 Socket API - historiaa Lähtöisin 4.2BSD -järjestelmästä vuodelta 1983 (Berkeley System Distribution) –sen jälkeen yleistyneet muissakin kuin BSD- pohjaisissa Linuxin sockets API ei pohjaudu BSD apiin, vaan se on kehitetty tyhjästä (liekö ongelmia kirjan esimerkeissä?)

6 UNIX-standardit, POSIX Portable Operating System Interface on IEEE:n määrittelemä standardikokoelma Useita versioita (IEEE Std 1003.1-1988, -1990, -1992, -1993, -1996) Part 1: System API (C-kieli) (kirjassa POSIX.1), Part 2: Shell and utilities (kirjassa POSIX.2) Part 3: System administration Tietoa eri POSIX-standardeista http://www.pasc.org/standing/sd11.html

7 UNIX-standardit, Open Group X/Open julkaisi 1992 Single Unix Specification -määrityksen X/Open perusti Open software foundationin (OSF) kanssa 1996 Open Group:in Open Group määritteli vuonna 1997 Single Unix Specification version 2 -määrityksen

8 UNIX-standardit Austin Common Standards Revision Group määritellyt 4000 sivua ohjelmistorajapintoja –Yhdistää IEEE:n POSIX - ja Open Groupin Technical standard -määritykset Tuloksena ISO/IEC 9945:2002 aka IEEE Std 1003.1-2001 aka Single Unix Specification Version 3 Kirjassa kutsutaan nimellä The POSIX Specification, kirjan pääpaino juuri tässä määrityksessä ja sen Sockets API:ssa http://www.unix.org/version3/

9 Asiakas/palvelin -malli

10 Simple daytime client Puolet asiakas/palvelin -mallin perusesimerkistä lähdekoodi: intro/daytimetcpcli.c kääntäminen: cd intro && make

11 Simple daytime client Muodostaa TCP-yhteyden palvelimelle ja kysyy siltä kellonajan kertaa perusfunktiot: socket() muodostaa TCP socketin inet_pton() tekee merkkijonosta osoiterakenteen connect() yhdistää palvelimeen read() lukee socketista

12 Virheentarkistus Funktoiden palautusarvot kannattaa tarkistaa virheiden varalta Kirjan koodin kirjastossa on luotu useille funktioille ns. päällysfunktiot, joissa on yhden funktion toiminnallisuus ja palautusarvon tutkinta –lähdekoodilistaukset ovat näin selvempiä ja näiden funktoiden käyttö omassa koodissa nopeampaa Tällaisen funktion huomaa isosta alkukirjaimesta, esim. Socket(), Bind(), Listen()

13 Päällysfunktiot esim. lib/wrapsock.c - Socket() /* include Socket */ int Socket(int family, int type, int protocol) { int n; if ( (n = socket(family, type, protocol)) < 0) err_sys("socket error"); return(n); } /* end Socket */

14 Simple daytime server Vastapuoli mainitulle daytime client - ohjelmalle Kuuntelee asiakasohjelmien yhteyspyyntöjä, hyväksyy yhteyden ja lähettää ajan lähdekoodi: intro/daytimetcpsrv.c Mainitut päällysfunktiot käytössä

15 Simple daytime server socket() korvattu Socket() :lla Bind() sitoo paikallisen osoitteen socketiin –IP-osoitteena INADDR_ANY –porttina 13 (daytime) Listen() asettaa kuuntelemaan yhteyksiä Accept() hyväksyy yhteyden ja luo yhteyssocketin, Write() lähettää merkkijonon (ajan) asiakkaalle

16 daytime-esimerkki Esimerkki on IPv4-riippuvainen –IPv6-toimivuus muutamalla muutoksella intro/daytimetcpcliv6.c –molempien kanssa yhteensopiva käsitellään myöhemmin kappaleessa 11 daytime esimerkkinä läpi kirjan, ominaisuudet vaan muuttuvat ja täydentyvät –toisena esimerkkinä kaiuttava (echo)

17 Harjoitus 1.1 & 1.2 Kappaleen 1.9 lopusta löytyy ohjeet verkkotopologiatiedon saamiseen –komentoja netstat -ni ; netstat -nr, ifconfig lähdekoodin haku ja kääntäminen esitelty jo aikaisemmissa kalvoissa - aja daytimetcpcli eri IP osoitteilla muutaman kerran

18 Harjoitus 1.3 & 1.4 Muokkaa daytimetcpcli.c:n socket-kutsun ensimmäinen argumentti (AF_INET) 9999:ksi. Etsi errno -arvo tulostetulle virheelle Lisää asiakasohjelmaan while-looppiin laskuri, joka lisääntyy yhdellä kun read palauttaa > 0

19 Harjoitus 1.5 Vaihda daytimetcpsrv.c:n portti 13:sta 9999:ksi, vaihda write-kutsu silmukaksi, joka kutsuu write():ä (ajan merkkijonon) tavu kerrallaan Vaihda myös asiakasohjelmasta (versiosta, joka tulostaa laskurin) portti 9999:ksi Mitä asiakasohjelman laskurina tulostetaan?


Lataa ppt "010990001 - Tietoliikennetekniikan jatko- opintokurssi 2 Unix Network Programming The Sockets Networking API Chapter 1 - Introduction."

Samankaltaiset esitykset


Iklan oleh Google