• Non ci sono risultati.

C socket API

N/A
N/A
Protected

Academic year: 2021

Condividi "C socket API"

Copied!
24
0
0

Testo completo

(1)

C socket API

client

server

(2)
(3)

 

Le API per l’uso di socket in C comprendono

 

Definizione di tipi di dati (indirizzi IP, indirizzi di socket)

 

Funzioni di utilità (conversione dati, risoluzione dei nomi DNS)

 

Funzioni per la gestione dei socket (creazione, connessione)

 

I socket non sono solo relativi ai protocolli TCP o UDP su IP

 

Si possono specificare la famiglia e il tipo di protocollo

 

Sono possibili modalità con connessione (es. TCP) che senza connessione (es. UDP)

 

E’ un meccanismo più generale per la comunicazione interprocesso che può essere basato su soluzioni di tipo diverso (es. memoria condivisa per

processi in locale)

Process Socket API

Tranport Layer Protocol

OS

Process Socket

API

Tranport Layer Protocol

OS

communication channel

(4)
(5)
(6)
(7)

00001010 00010111 00001110 00000110

00001010 00010111 00001110 00000110

MSB LSB

00001010 00010111 00001110 00000110

A A+1 A+2 A+3

A A+1 A+2 A+3

big-endian little-endian

(8)

 

Sono disponibili funzioni per la conversione dal formato dell’host a quello di rete (big-endian)

 

Se il formato per l’architettura su cui è eseguita è già big-endian, la funzione non altera l’ingresso, altrimenti scambia l’ordine dei byte

 

u_short htons(u_short host_short)

 

u_short ntohs(u_short network_short)

 

u_long htonl(u_long host_long)

 

u_long ntohl(u_long network_long)

Esempio: conversione dell’indirizzo di porta (u_short) e IP (u_long) addr.sin_port = htons((u_short)4321);

addr.sin_addr.s_addr = htonl(INADDR_ANY);

(9)

 

Conversione da rappresentazione ASCII decimale a binario a 32 bit

 

int inet_aton(const char *strptr, struct in_addr *addrptr)

 

produce un valore uguale a 0 se la stringa non è un indirizzo IP nel formato corretto (>0 se la conversione avviene con successo)

 

if(!inet_aton(“193.205.7.1”, &addr)) {..error..}!

 

char *inet_ntoa(struct in_addr inaddr)

 

Funzione di conversione da nome DNS ad indirizzo IP

 

struct hostent *gethostbyname(const char *hostname)

 

E’ una chiamata al resolver DNS

 

La struttura prodotta contiene numerose informazioni sull’host

 

produce il valore NULL in caso di errore

(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)

Riferimenti

Documenti correlati

[r]

[r]

Dopo averne dato la definizione, dare un esempio di autovettore di una funzione definita sullo spazio R

L’espressione logica SOMMA DI PRODOTTI (prima forma canonica) 2.. Dire se la copertura minima trovata

Per studiarne la monotonia e l’esistenza di eventuali punti di massimo, studiamo il segno della derivata prima.. Ne concludiamo che sia a che c

Per studiarne la monotonia e l’esistenza di eventuali punti di massimo, studiamo il segno della derivata prima.. Ne concludiamo che sia a che c

Per studiarne la monotonia e l’esistenza di eventuali punti di massimo, studiamo il segno della derivata prima.. Ne concludiamo che sia a che c

La tecnica di scomposizione può essere utilizzata anche per risolvere equazioni di grado superiore