Le socket (o i socket come dice qualcuno) nascono su BSD e poi sono state trapiantate su tutte le versioni Unix, quindi (nel senso di poi... ) su Linux.
Conoscere le basi del funzionamento delle BSD socket sicuramente aiuta anche nell'uso di Winsock. Ci sono alcune differenze ma per le prime sperimentazioni le differenze non sono abissali e comunque i concetti base sono quelli. Esempio che risalta subito su win è l'uso iniziale di WSAStartup e finale di WSACleanup che su *nix non esistono assolutamente... ma questo non è un problema, basta saperlo.

Altra differenza è che su *nix c'è omogeneità tra i socket e i file descriptor. Su windows no! questo ha delle importanti implicazioni nell'uso della redirezione. Ma questo fa già parte di un argomanto più "avanzato" e non ti sto ad annoiare.

Ti dico per esperienza che a livello base (e qui parlo di inviare e ricevere semplici messaggi come può essere una interrogazione client-server) non ci sono sostanziali differenze.


Per quanto concerne la conoscenza del C, mi associa alle considerazioni di maiosyet_2. Esistono delle strutture dati abbastanza complicate nell'ambito delle socket per uno che non ha dimestichezza col linguaggio. Mi riferisco in particolare a sockaddr /sockaddr_in e hostent usate nell'inizializzazione degli endpoint (ip/porta etc) e nella risoluzione dei nomi. Queste contengono strutture nidificate e accedervi a volte è un problema anche per chi conosce il C ma non ha freschi concetti quali puntatori e roba simile.

Tu puoi benissimo impararti le linee di codice a memoria o fare copia/incolla e modificare quello che ti serve ma se ci devi mettere del tuo per creare una cosa un po' "diversa" rischi di non riuscirci se non hai capito bene i concetti. Per cominiciare comunque puoi fare copia/incolla...

Documentazione: mi associo nuovamente a maiosyet_2. Roba su BSD socket ne trovi ovunque. Cercando bene la trovi comunque anche per Win. I link sotto possono esserti utili (non sono tutti allo stesso livello come argomenti affrontati:


http://burks.bton.ac.uk/burks/pcinfo...ut/winsock.htm
http://tangentsoft.net/wskfaq/

Riferimenti all'interfaccia:
http://msdn.microsoft.com/library/de...art_page_2.asp
http://www.jimprice.com/winsock/winsock2api-withtoc.PDF
ftp://ftp.microsoft.com/bussys/winso...k2/WSAPI22.DOC