Socketprogrammering Klient/server Protokollstacken TCP UDP Java C Avlusning Versionshantering
Klient/server
Protokollstacken Socket = ip-adress + port + transportprotokoll Undvik för egna protokoll, samt ”vanliga” (1234, 1337 osv.)
TCP / UDP
Strömmar InputStream Läser ren byte-data (ettor och nollor) DataInputStream Från bytes till int, float, osv. (Se upp med byte/bit-ordningen på olika system, endianness) InputStreamReader Koppling från byte-ström till tecken-ström Ser upp med teckenkodning mellan olika system (charset) Scanner Läser text och konverterar data BufferedReade r Läser text OutputStream Skriver ren byte-data DataOutputStream Skriver int, float, osv. OutputStreamWriter Koppling från tecken-ström till byte-ström PrintWriter Skriver text (används som System.out) BufferedWriter Skriver text InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream();
Java Kodexempe l
C Läs manualsidorna man -s 2, 3c, 3socket (Solaris) 2 (Linux, Mac OS X) Kodexempel Beej's Guide to Network Programming
Avlusning ● gdb, dbx, jdb, ddd ● Vid nätverksprogrammering kan avlusning påverka resultatet, print-satser kan vara en lösning.
Versionshantering ● För att begära SVN-konto, skriv till support och uppge användarnamn och kurskod. ● svn checkout svn update svn add svn commit svn remove svn log svn diff ● Version Control with Subversion
Lab 1 ● Token ring ● Viktigt att visa att det bara är ett paket i ringen ● Börja redan nu ● Arbeta gärna i grupper (max 2 personer) ● Visa tydligt i rapporten hur programmet byggs och körs
Lab 1 ● Tips: Använd script när ni testar filnamn.bash: #!/bin/bash ssh scanner ”cd edu/doi/lab1; java Ring tcp processor 12345” & ssh processor ”cd edu/doi/lab1; java Ring tcp internet 12345” & ssh internet ”cd edu/doi/lab1; java Ring tcp scanner 12345” & ● chmod +x filnamn.bash./filnamn.bash ● Tips: Script kan även stänga processer (se kill och killall) ● Tips: Använd en timer för att inte glömma kvar gamla processer