Socket Programming Berkeley Sockets & WinSock 2

Slides:



Advertisements
Verwante presentaties
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Advertisements

Blok 7: netwerken Les 7 Christian Bokhove.
Order placed Should be Nederland Netherlands can be removed here, just Scancorner Instead of ‘undefined’ -> ‘geen’ New logo should be displayed here. COUNTS.
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
Een SIP softphone voor Linux Michel de Boer
Internet College 2 Architecturen. Architectuur van netwerktoepassingen •Peer to peer –Windows werkgroep •File- en printer sharing •Internet connection.
Stateful web, developments, trends 1 Webtechnologie Lennart Herlaar.
Internet College 1 Architecturen.
JQuery en ASP.NET Bart De Meyer.
Access en MySql Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 8(1): Het Operating.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
Blok 7: netwerken Les 8 Christian Bokhove.
Internet Internet Diensten Informatie Maatschappij
TCP/IP Fundamentals 7 december 2001 Internet Society, Zoetermeer Iljitsch van Beijnum Copyright 2001 Iljitsch van Beijnum Er zijn onderdelen.
Speaking OData to SharePoint 2010 in a RESTful manner Michaël Hompus | Principal Developer | Winvision.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Beyond Big Grid – Amsterdam 26 september 2012 Enquette 77 ingevulde enquettes, waarvan 60 met gebruikservaring = Mainly Computer Science.
(Gast)gebruik van (W)LAN op basis van 802.1X
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
SQL injections en meer... PERU. web application vulnerabilities Cross Site Scripting (21.5%) SQL Injection (14%) PHP includes (9.5%) Buffer overflows.
Blackboard bijeenkomst 25 april Network Load Balancing & ISA Server (2006) J.G.A. Jans Hogeschool INHOLLAND
Server side scripting 1 Webtechnologie Lennart Herlaar.
Network Address Translation
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
WinFX Overview Martin Tirion Senior Consultant Microsoft Services.
Client Management met ConfigMgr Jannes Alink – Management.
Applicatieplatform congres 12 & 13 maart
GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.
Real-Time Systems (RTSYST) Week IPC inter process communication Shared variabele based (H5) Message based (H6) Kan ook gebruikt worden in systemen.
The Architecture.  GameLoop  Opbouw  Verschillende Modules  Comminucatie  Tekenen.
JAVA -- H111 Socket (of communicatiekanaal): UNIX-term voor de communicatie tussen processen -> uitwisseling van gegevens -> meerdere machines bv. client.
ALBRECHT DÜRER'S MAGIC SQUARE ALBRECHT DÜRERS MAGISCH VIERKANT
Computernetwerken Academiejaar de Bachelor INF/ICT – Schakelprogramma INF Wim Lamotte.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
DB&SQL8- 1 VBA Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Visual Basic.Net - Overzicht
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : LEDs en displays.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
PEMSY1http:// 1  Herhaling: - ACPS - set status, conditioneel uitvoeren - indexed addressing  Nieuw: - CMP, CMN - half-word.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 6 - onderwerpen seriele interface (UART -
Netwerken / Internet ICT Infrastructuren David N. Jansen.
Geheugen, distributie en netwerken Netwerken: de basis voor distributie van gegevens en taken (processen) –bestaan zo’n 40 jaar, zeer snelle ontwikkeling.
Deltion College Engels B1 Schrijven [Edu/004]/ subvaardigheid lezen thema: reporting a theft can-do : kan formulieren waarin meer informatie gevraagd wordt,
Samsung Office Serv Soho ISDN Training en uitleg Guido Lovink Versie 1.01.
Microsoft Operations Manager & Scripting
Web Applicaties Bouwen met Visual Studio .NET
1 december KC Development Tools Hands-on Oracle HTML DB v2.0.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Het geheim van Linked Data Marcel ReuversGeonovum CB-NL 20 november 2014.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
© 2007 Cisco Systems, Inc. All rights reserved.Cisco Public ITE PC v4.0 Chapter 1 1 Application Layer Functionality and Protocols Network Fundamentals.
Les 2: Zaterdag 1 maart 2014 Wim Peeters
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
1 Communicatienetwerken Oefeningen 3 : TCP & IP Woensdag 28 november 2007.
Netwerken 5 Enigma Netwerken paragraaf 8. Transportlaag Netwerklaag (IP-protocol) Best-effort pakketcommunicatie Transportlaag (UDP- en TCP-protocol)
M5 Datacommunicatie Applicatielaag
M5 Datacommunicatie Transportlaag
Netwerken & Internet 3.
Transcript van de presentatie:

Socket Programming Berkeley Sockets & WinSock 2

Introductie Wat is een socket ? Een manier om 2 processen met elkaar te laten communiceren Unix & linux : Berkeley sockets Windows : Winsock (1 en 2) 2 Types Stream sockets Datagram sockets

Datagram Sockets Unreliable, geen garanties over : Aankomst van data Volgorde van ontvangst Tijdstip van ontvangst Op basis van UDP Connection-less Data wordt in afzonderlijke delen verstuurd (datagrammen)

Stream Sockets Reliable, garanties over : Aankomst van pakketten Volgorde van ontvangst Op basis van TCP protocol Connection-oriented Data wordt als 1 stream verstuurd (buffering)

Byte Ordering 2 types : Network Byte Ordering MSB staat vooraan in data type Host Byte Ordering Kan zelfde zijn als NBO of omgekeerd Conversie is mogelijk ahv functies zoals htons(),…

Includes Linux : #include Optioneel : #include Win32 : #include “winsock2.h”

Winsock starten WSAStartup WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { /* Tell the user that we could not find a usable */ /* WinSock DLL. */ return; } WSACleanup

Error Checking Check altijd de return waarde van een socket functie Linux : errno wordt ingevuld (global var) perror(char *); schrijft de error uit WIN32 : WSAGetLastError() geeft error int terug

Address Families Verschillende types communicatiekanalen & onderliggende protocollen AF_INET Internet protocol sockets AF_UNIX Unix File Descriptors AF_IRDA Infrared communication

Adres Structs Algemene geval : struct sockaddr Specifiek geval (AF_INET): struct sockaddr_in sin_port en sin_addr in Network Byte Order ! struct sockaddr { unsigned short sa_family; /* address family, AF_xxx */ char sa_data[14]; /* 14 bytes of protocol address */ }; struct sockaddr_in { short int sin_family; /* Address family */ unsigned short int sin_port; /* Port number */ struct in_addr sin_addr; /* Internet address */ unsigned char sin_zero[8]; /* Same size as struct sockaddr */ } struct in_addr { unsigned long s_addr; /* that's a 32-bit long, or 4 bytes */}

Conversiefuncties Ip adres in long : unsigned long inet_addr(char *); int inet_aton(const char *cp, struct in_addr *inp); Long naar IP adres : Char * inet_ntoa(struct in_addr); Host <> Network byte order htons() -- "Host to Network Short" htonl() -- "Host to Network Long" ntohs() -- "Network to Host Short" ntohl() -- "Network to Host Long"

Voorbeeld (adres) struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; // host byte order my_addr.sin_port = htons(MYPORT); // short, network byte order inet_aton(“ ", &(my_addr.sin_addr)); memset(&(my_addr.sin_zero), '\0', 8); // zero the rest of the struct struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; // host byte order my_addr.sin_port = htons(MYPORT); // short, network byte order my_addr.sin_addr.s_addr=inet_addr(“ “); memset(&(my_addr.sin_zero), '\0', 8); // zero the rest of the struct

Socket() SOCKET socket( int af, int type, int protocol ); int socket(int domain, int type, int protocol); domain, af = AF_INET Type : SOCK_STREAM SOCK_DGRAM Protocol = 0 Geeft socket identifier terug

Bind() int bind(int sockfd, struct sockaddr *my_addr, int addrlen); int bind( SOCKET s, const struct sockaddr* name, int namelen ); Verbindt een socket met een adres Voor connection-oriented sockets Vooral van toepassing voor server applicaties Gebruikt bij vaste poort, bv ftp server = 21 Anders impliciete call (systeem bindt aan beschikbare poort op lokaal systeem)

Connect() int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); int connect( SOCKET s, const struct sockaddr* name, int namelen ); Remote adres en poort invullen in sockaddr Gebruikt voor connection-oriented sockets Remote socket moet in listening state zijn Kan ook gebruikt worden voor datagram sockets (adres wordt intern bijgehouden)

Listen() en Accept() int listen(int sockfd, int backlog); Zet de socket in listening mode Backlog = queue length int accept(int sockfd, void *addr, int *addrlen); Sockfd = listening socket Addr = info over connecterend systeem return value = nieuwe socket !

Send() int send(int sockfd, const void *msg, int len, int flags); Stuurt data over een geconnecteerde socket Return value = effectief aantal verstuurde bytes Is niet altijd gelijk aan len ! Indien return value < len : send call herhalen met resterende data

Recv() int recv(int sockfd, void *buf, int len, unsigned int flags); Return value = aantal ontvangen bytes Indien 0 : Andere zijde heeft connectie verbroken Len geeft maximale buffer size aan Blocking functie Gaat pas verder wanneer data ontvangen is

SendTo() en RecvFrom() int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *to, int tolen); int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); Datagram sockets Adressen moeten steeds meegegeven worden

IO control int ioctlsocket( SOCKET s, long cmd, u_long* argp); // WIN32 int ioctl(int fildes, int request, /* arg */...); // LINUX Cmd = bv. FIONREAD Geeft aantal bytes weer dat kan gelezen worden met een recv() call

Close() en Shutdown() close(sockfd); int shutdown(int sockfd, int how); Shutdown kan connectie slechts in 1 richting sluiten indien gewenst 0 -- Further receives are disallowed 1 -- Further sends are disallowed 2 -- Further sends and receives are disallowed (like close())

DNS Resolving struct hostent *gethostbyname(const char *name); struct hostent { char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }; #define h_addr h_addr_list[0] returnt 0 indien naam niet gevonden wordt in dns h_addr is eerste adres uit de lijst

Select() int select(int numfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); Macro’s : FD_ZERO(fd_set *set) -- clears a file descriptor set FD_SET(int fd, fd_set *set) -- adds fd to the set FD_CLR(int fd, fd_set *set) -- removes fd from the set FD_ISSET(int fd, fd_set *set) -- tests to see if fd is in the set struct timeval { int tv_sec; // seconds int tv_usec; // microseconds };

Extra informatie Linux : MAN pages ml/reference.html Windows =/library/en- us/winsock/winsock/windows_sockets_api_referen ce_2.asp =/library/en- us/winsock/winsock/windows_sockets_api_referen ce_2.asp