Käyttäjä:Ordyh/Sandbox

Linux.fista
Versio hetkellä 12. helmikuuta 2009 kello 19.01 – tehnyt Ordyh (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

Pistoke (engl. socket) on UNIX-järjestelmissä keskeinen tietoliikenneyhteyttä kuvaava ohjelmointirajapinta. Teknisemmin ilmaistuna pistoke on käyttöjärjestelmän TCP/IP-toteutuksen tarjoama abstraktio. Jokaista UNIX-järjestelmästä Internettiin kulkevaa TCP- ja UDP-yhteyttä vastaa yksi pistoke käyttöjärjestelmän muistissa. Pistokkeeseen kulkeva verkkoliikenne ohjataan pistokkeen avanneelle prosessille. Pistokkeen ei tarvitse välttämättä kuljettaa TCP/IP-liikennettä, vaan sen protokollaksi voidaan määritellä myös esimerkiksi IPX, tai UNIX domain socket, jolloin se on yksi muoto samalla koneella tapahtuvasta prosessienvälisestä kommunikoinnista (engl. Inter Process Communication) eli IPC:stä.

Historiaa

Pistokkeisiin perustuva kommunikointirajapinta on alunperin kehitetty Berkeley Source Distribution eli BSD UNIX-järjestelmille, ja julkaistu BSD-lisenssin alaisuudessa 4.2BSD:n yhteydessä vuonna 1983. Tämän takia toteutus tunnetaan yleisesti nimellä Berkeley Sockets. Myöhemmin mm. Microsoftin Windows järjeslmiin kopoitiin tämä toteutus, ja tämän vuoksi verkko-ohjelmien ohjelmointi Windows-järjestelmissä ei eroa merkittävästi UNIX-järjestelmien käytännöistä. Myöhemmin Windowsille on kirjoitettu oma versio pistokerajapinnasta.

Nykyisin POSIX määrittelee kaikille UNIX-järjestelmille yhteisen pistokerajapinnan, joka ei merkittävästi eroa alkuperäisestä Berkeley Sockets -toteutuksesta.

Pistoke Linuxissa

Pistokkeet saa C-kielessä käyttöön seuraavasti:

#incldue <sys/types.h>
#include <sys/socket.h>

Uusi yleiskäyttöinen pistoke luodaan:

int pistoke = socket(int