Python -- međuprocesna komunikacija -- utičnice - GASERI


BSD utičnice ili POSIX utičnice (engl. sockets), poznate i pod nazivima Berkeley sockets i Unix sockets, su de facto standardno sučelje za međuprocesnu komunikaciju lokalno i putem računalne mreže



Onion Details



Page Clicks: 0

First Seen: 03/15/2024

Last Indexed: 09/18/2024

Domain Index Total: 397



Onion Content



Python: međuprocesna komunikacija: utičnice - BSD utičnice ili POSIX utičnice (engl. sockets ), poznate i pod nazivima Berkeley sockets i Unix sockets , su de facto standardno sučelje za međuprocesnu komunikaciju lokalno i putem računalne mreže - nastaju kao aplikacijsko programsko sučelje za pristup TCP-u i IP-u 1983. godine kad Bill Joy i kolege iz Computer Systems Research Group s Kalifornijskog sveučilišta u Berkeleyu izbacuju 4.2BSD ; BSD je u to doba razvojna platforma za TCP/IP, o čemu detaljnije govori Marshall Kirk McKusick u svojim izlaganjima o povijesti razvoja Unixa na Berkeleyu: standardizirane su 2008. godine uz male razlike u imenovanju funkcija i preimenovane u POSIX utičnice - podjela prema adresiranju ( AF_* ) - podjela prema pouzdanosti ( SOCK_* ) - module socket ( službena dokumentacija ) nudi pristup BSD socket sučelju - koristi objekte tipa bytes u komunikaciji; kad šaljete objekte tipa str , za konverziju između tipova str i bytes koriste se str.encode() i bytes.decode() - socket.AF_UNIX mrežne utičnice formalno koriste datotečni sustav kao prostor adresa (interna implementacija je efikasnija od pisanja i čitanja iz datoteka) - socket.AF_INET mrežne utičnice koriste IPv4, a socket.AF_INET6 mrežne utičnice koriste IPv6 kao prostor adresa - socket.SOCK_DGRAM su datagramske utičnice - socket.bind(address) se povezuje na adresu address (poslužiteljska strana) - socket.close() zatvara utičnicu; potrebno je napraviti nakon završetka rada s utičnicom, slično kao kod datoteka - ako želimo koristiti datoteke umjesto IP adresa, u primjeru poslužitelja iznad treba promijeniti dvije linije - socket.connect(address) se povezuje na adresu address (klijentska strana) - socket.sendto(data, address) šalje podatke data na adresu address i vraća veličinu poslanih podataka - ako želimo koristiti datoteke umjesto IP adresa, u primjeru klijenta iznad treba promijeniti dvije linije - Zadatak - socket.SOCK_STREAM su tokovne utičnice - poslužiteljska utičnica stvara utičnice na strani poslužitelja za klijente koji se povezuju - socket.accept() prihvaća klijenta i vraća uređeni par (socket object, address info) za svakog klijenta; socket object se koristi za komunikaciju s točno tim klijentom; kad se koristi socket.AF_UNIX , address info je prazan - klijentska utičnica se povezuje na poslužitelj isto kao kod datagramskih - Napišite poslužiteljsku i klijentsku stranu aplikacije za dvosmjernu komunikaciju koristeći datagramske utičnice. Na klijentskoj strani korisnik unosi niz znakova. U preostalim slučajevima niz se ne šalje. Klijentska aplikacija prekida nakon jednog slanja i primanja, a poslužiteljska nakon jednog primanja i slanja. poslužiteljska aplikacija može primiti više od jednog klijenta korištenjem poziva select() iz modula select za provjeru postoji li novi klijent ili novi podaci za čitanje na nekoj od postojećih klijentskih utičnica - Author: Vedran Miletić