Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuEeva-Liisa Korhonen Muutettu yli 9 vuotta sitten
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?
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.