jump to navigation

C Socket Programming in the UNIX environment – part 1 15 novembre 2007

Posted by fripp in C, GNU/Linux, Informatica, Networking, Programmazione, Sistemi Operativi, Unix.
Tags: , , , , ,
trackback

Da qualche tempo mi era venuta l’idea di scriver qualcosa sulla programmazione delle socket in C, un argomento che ritengo particolarmente interessante. Secondo la mia modesta opinione, la programmazione delle socket rappresenta un punto di partenza fondamentale per lo studio e l’approfondimento della conoscenza dei protocolli di rete fondamentali. La scelta del linguaggio C è secondo me la più naturale, perchè ti permette veramente di toccar con mano come è fatta una socket, a prezzo di introdurre qualche “leggera” complicazione nella gestione della socket stessa. Naturalmente non pretendo di esser esaustivo! Quello che scriverò è solo il frutto dei miei studi da autodidatta sulla materia ed è solo una percentuale infinitesimale di quello che c’è da sapere sulle socket; io lo vedo anche come un modo per fare ordine tra le mie idee e per metter in discussione le mie limitate conoscenze sull’argomento.

Ma passiamo all’azione…….

La cosa più banale è proprio la creazione della socket, che avviene semplicemente attraverso l’uso della chiamata alla funzione “socket” (vedi che fantasia!).

 

#include<sys/socket.h>     

int socket(int domain, int type, int protocol);

La funzione precedente restituisce un file descriptor che viene usato dal SO per identificare in maniera univoca la socket appena creata. Sarebbe buona cosa controllare che il valore di ritorno della funzione sia un valore positivo; se il valore restituito è -1 allora è avvenuto un errore nella creazione della socket. Il primo argomento della funzione è un intero che indica il dominio della socket che si sta creando, ovvero la famiglia di protocolli che si vuole utilizzare. Ad esempio, se si vuole usare il protocollo di rete IPv4 si deve usare come primo parametro della funzione la costante PF_INET ; per IPv6 si usa invece PF_INET6.Il secondo parametro invece specifica il tipo di socket che si sta creando, ovvero le caratteristiche del canale di comunicazione che si intende usare (in soldoni, il protocollo di livello trasporto). I valori più comuni sono SOCK_STREAM, che crea un canale affidabile (crea una socket TCP), e SOCK_DGRAM, che crea un canalle a datagrammi (UDP).

Il terzo e ultimo parametro indica il protocollo da usare. Se si usa come terzo parametro 0 viene usato un protocollo di default, specifico per la socket appena creata (in genere si usa fare così).Qui finisce la “prima puntata” della mia “guida” alla programmazione delle socket.

A presto…….

Annunci

Commenti»

1. Ordeal - 20 novembre 2007

Adoro i post ben riusciti…

2. fripp - 20 novembre 2007

Così mi fate arrossire! Non sei il primo che mi fa complimenti per questo post.
Grazie

3. piuma - 11 gennaio 2008

ottimo !!!


Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: