3 545
muokkausta
(Ak: Uusi sivu: '''Pistoke''' (engl. '''''socket''''') on UNIX-järjestelmissä keskeinen tietoliikenneyhteyttä kuvaava ohjelmointirajapinta. Teknisemmin ilmaistuna pistoke on käyttöjärjestel...) |
p (typo, syntax hilight) |
||
Rivi 17: | Rivi 17: | ||
==Esimerkki pistokkeesta Linuxissa== | ==Esimerkki pistokkeesta Linuxissa== | ||
Pistokkeet saa [[C]]-kielessä käyttöön seuraavasti: | Pistokkeet saa [[C]]-kielessä käyttöön seuraavasti: | ||
<source lang="c"> | |||
#include <sys/types.h> | |||
#include <sys/socket.h> | |||
</source> | |||
Uusi ''käyttämätön pistoke'' luodaan: | Uusi ''käyttämätön pistoke'' luodaan: | ||
<source lang="c"> | |||
int socket(int domain, int type, int protocol); | |||
</source> | |||
Esim. palvelinpistokkeesta | Esim. palvelinpistokkeesta | ||
<source lang="c"> | |||
#include <netinet/in.h> | |||
int pistoke = socket(PF_INET6, SOCK_STREAM, 0) | |||
</source> | |||
Luo [[IPv6]]-protokollaa käyttävän TCP-pistokkeen. | Luo [[IPv6]]-protokollaa käyttävän TCP-pistokkeen. | ||
Pistoke sidotaan (engl. bind) isäntäkoneen johonkin porttiin seuraavasti: | Pistoke sidotaan (engl. bind) isäntäkoneen johonkin porttiin seuraavasti: | ||
<source lang="c"> | |||
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen); | |||
</source> | |||
ja sitten pistoke merkitään halukkaaksi vastaanottamaan paketteja: | ja sitten pistoke merkitään halukkaaksi vastaanottamaan paketteja: | ||
<source lang="c"> | |||
int listen(int sockfd, int backlog); | |||
</source> | |||
Pistokkeesta tulee ''kuunteleva pistoke''. | Pistokkeesta tulee ''kuunteleva pistoke''. | ||
Tämän jälkeen yhteyksiä voi ottaa vastaan yksitellen <tt>accept()</tt> kutsulla: | Tämän jälkeen yhteyksiä voi ottaa vastaan yksitellen <tt>accept()</tt> kutsulla: | ||
<source lang="c"> | |||
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); | |||
</source> | |||
<tt>accept</tt>in palauttama <tt>int</tt>-arvo on samalla mudostetun yhteyden <tt>socketfd</tt>-arvo, jota voi lukea ja johon voi kirjoittaa tavallisen tiedoston tapaan <tt>fread()</tt> ja <tt>fwrite()</tt> -kutsuilla. | <tt>accept</tt>in palauttama <tt>int</tt>-arvo on samalla mudostetun yhteyden <tt>socketfd</tt>-arvo, jota voi lukea ja johon voi kirjoittaa tavallisen tiedoston tapaan <tt>fread()</tt> ja <tt>fwrite()</tt> -kutsuilla. |