PDA

View Full Version : C e TCP/IP


Killian
04-09-2003, 11:08
ciao, vorrei chiedere un parere agli esperti: c'è un sito in cui posso documentarmi, o un libro non troppo costoso (per ora preferisco il sito, visto che saprò tra una decina di giorni se la cosa effettivamente mi servirà) riguardo la programmazione in C sul protocollo TCP/IP? Mi spiego meglio, forse per il tirocinio di laurea avrò bisogno di sviluppare del codice C per far comunicare un PC e una scheda elettronica tramite protocollo TCP/IP, il PC e la scheda saranno collegati probabilmente via ethernet, sul PC ci sarà quasi sicuramente un SO Windows.

Qualcuno può aiutarmi? Tenete presente che qualcosa di C la conosco, ma comunque ad un livello base, cicli, procedure ecc.; comunque non grafica (che ovviamente in questo caso non mi serve).

mjordan
04-09-2003, 18:25
Originariamente inviato da Killian
ciao, vorrei chiedere un parere agli esperti: c'è un sito in cui posso documentarmi, o un libro non troppo costoso (per ora preferisco il sito, visto che saprò tra una decina di giorni se la cosa effettivamente mi servirà) riguardo la programmazione in C sul protocollo TCP/IP? Mi spiego meglio, forse per il tirocinio di laurea avrò bisogno di sviluppare del codice C per far comunicare un PC e una scheda elettronica tramite protocollo TCP/IP, il PC e la scheda saranno collegati probabilmente via ethernet, sul PC ci sarà quasi sicuramente un SO Windows.

Qualcuno può aiutarmi? Tenete presente che qualcosa di C la conosco, ma comunque ad un livello base, cicli, procedure ecc.; comunque non grafica (che ovviamente in questo caso non mi serve).

Devi studiarti le socket per implementare funzionalità di IPC. Tieni presente che le socket in C non sono una minkiata come in Java. Devi capire i concetti.

http://www.gnu.org/manual/glibc-2.2.5/html_node/Sockets.html#Sockets

Killian
05-09-2003, 10:58
Originariamente inviato da mjordan
Devi studiarti le socket per implementare funzionalità di IPC. Tieni presente che le socket in C non sono una minkiata come in Java. Devi capire i concetti.

http://www.gnu.org/manual/glibc-2.2.5/html_node/Sockets.html#Sockets

grazie del link, ancora devo leggerlo ma spero che mi sia utile.

Voglio aggiungere una cosa, esistono librerie C già pronte, usabili liberamente e utili allo scopo?

mjordan
05-09-2003, 11:15
Originariamente inviato da Killian
grazie del link, ancora devo leggerlo ma spero che mi sia utile.

Voglio aggiungere una cosa, esistono librerie C già pronte, usabili liberamente e utili allo scopo?

Certo ce ne sono a tonnellate. Ma per un tirocinio non penso ti facciano imparare una libreria pronta. Voglio dire, che utilità avrebbe ...

Killian
05-09-2003, 12:04
Originariamente inviato da mjordan
Certo ce ne sono a tonnellate. Ma per un tirocinio non penso ti facciano imparare una libreria pronta. Voglio dire, che utilità avrebbe ...

in realtà nel tirocinio, se si farà questa cosa visto che non è ancora certo, il lavoro sarà fatto presso un'azienda su un prodotto, di cui la mia parte è appunto solo una parte, che viene fatto perchè commissionato da un'altra azienda, quindi l'importante è che il prodotto sia fatto e funzioni, non che venga fatto da zero senza avvalersi di parti di codice già pronte.

recoil
05-09-2003, 13:13
Originariamente inviato da mjordan
Tieni presente che le socket in C non sono una minkiata come in Java.

:eek: aiuto!
il gergo da sms dei giovani d'oggi! :D

non ho visto molto bene le socket in C ma in ogni caso non posso che essere d'accordo con te: in Java e' molto semplice interfacciarsi con i protocolli di trasporto (e meno male) :)

Killian
05-09-2003, 13:17
chissà che non sia possibile lavorare in java anzichè in C.....

Quali potrebbero essere i vantaggi, a parte la semplicità?
Dopotutto non devo fare niente di grafico, comunque non sono io a decidere che linguaggio usare, inoltre di C qualcosa so (poco), di Java non so niente, anche se conosco Javascript, che comunque non dovrebbe essere affatto simile, ho sentito.

misterx
05-09-2003, 19:13
Originariamente inviato da recoil
:eek: aiuto!
il gergo da sms dei giovani d'oggi! :D

non ho visto molto bene le socket in C ma in ogni caso non posso che essere d'accordo con te: in Java e' molto semplice interfacciarsi con i protocolli di trasporto (e meno male) :)


che poi è ciò che ti insegnano DICO ???? :D

recoil
05-09-2003, 19:45
Originariamente inviato da misterx
che poi è ciò che ti insegnano DICO ???? :D

si in università da me hanno spiegato solo le socket con Java, mentre in passato si facevano in C.

quanto a Killian: Java è diverso da javascript.
comunque al lavoro penso che ti dovrai attenere al linguaggio che usano per il resto del progetto.

mjordan
05-09-2003, 22:13
Originariamente inviato da Killian
in realtà nel tirocinio, se si farà questa cosa visto che non è ancora certo, il lavoro sarà fatto presso un'azienda su un prodotto, di cui la mia parte è appunto solo una parte, che viene fatto perchè commissionato da un'altra azienda, quindi l'importante è che il prodotto sia fatto e funzioni, non che venga fatto da zero senza avvalersi di parti di codice già pronte.

Bene. Comunque se ti ganno usare Java o comunque una libreria buon per te... Vorrà dire che avrai meno guai.

Quì c'è una di quelle librerie che ti dicevo:
E' abbastanza specializzata nonostante rimanga generica.

http://libnet.sourceforge.net/

Tuttavia se sei in un ambito aziendale penso non ti facciano neanche scegliere la libreria ... ;)

Killian
06-09-2003, 13:11
comunque nessuno mi ha ancora parlato di libri, esiste un libro sul C utile per fare quello che devo fare in Italiano che non costi un'esagerazione? Magari che alla fine di ogni capitolo contenga anche degli esercizi.

mjordan
06-09-2003, 16:42
Originariamente inviato da Killian
comunque nessuno mi ha ancora parlato di libri, esiste un libro sul C utile per fare quello che devo fare in Italiano che non costi un'esagerazione? Magari che alla fine di ogni capitolo contenga anche degli esercizi.

Libri che spiegano queste cose in italiano e di basso costo non ne ho mai trovati...
Ma se ti va di fare un piccolo investimento, questo è sicuramente la bibbia ufficiale della C nEtwork Programming:


Richard Stevens
Unix Network Programming, Volume I
Prentice Hall - Seconda edizione


ovviamente indispensabile anche il secondo:


Richard Stevens
Unix Network Programming, Volume II: Interprocess Communication
Prentice Hall - Seconda edizione


Quando si parla di network programming questi sono i testi di riferimento. Ovviamente devi avere delle conoscenze di bas edi system programming.

Killian
07-09-2003, 13:50
Originariamente inviato da mjordan

...

Quando si parla di network programming questi sono i testi di riferimento. Ovviamente devi avere delle conoscenze di bas edi system programming.

come conoscenze di base di system programming cosa intendi?
Attualmente le mie conoscenze riguardano cose elementari , fino alle strutture e alle operazioni sui file ad esempio.

mjordan
07-09-2003, 15:22
Originariamente inviato da Killian
come conoscenze di base di system programming cosa intendi?
Attualmente le mie conoscenze riguardano cose elementari , fino alle strutture e alle operazioni sui file ad esempio.

Pipe, named pipe, gestione di processi, file descriptor ...

Killian
07-09-2003, 20:15
Originariamente inviato da mjordan
Pipe, named pipe, gestione di processi, file descriptor ...

ok, sono nella merda fino al collo, il link che mi hai dato più sopra va bebe per queste cose? Conosci oltre a dei link, un libro in italiano che spieghi queste cose, che magari non costi mmmiillle euro?

Chissà quanto ci metterò a studiare, contando che al momento no ho altro da fare.

Comunque grazie per le tue risposte.

mjordan
08-09-2003, 15:22
Originariamente inviato da Killian
ok, sono nella merda fino al collo, il link che mi hai dato più sopra va bebe per queste cose? Conosci oltre a dei link, un libro in italiano che spieghi queste cose, che magari non costi mmmiillle euro?

Chissà quanto ci metterò a studiare, contando che al momento no ho altro da fare.

Comunque grazie per le tue risposte.

Nel link che ti ho dato c'è tutto. L'unico problema è che è un reference, se non hai nessunissima base sarà un po difficile seguirlo... D'altro canto non ho mai visto questa roba in italiano su dei libri ... Comunque ho da darti un libro interessante che ormai è aperto:

Mark Mitchell
Advanced Linux Programming
New Riders Publishing

La buona notizia è che lo puoi scaricare gratuitamente quì:
http://www.advancedlinuxprogramming.com/alp-folder

La cattiva notizia è che a dispetto del titolo non è nulla di avanzato ;) Comunque per un primo sguardo ai processi per esempio può essere utile...

Se vuoi qualcosa di serio sull'argomento, che, però, si paga (circa 80 euro) c'è il primo volume di Stevens, nella stessa collana dei titoli che ti ho dato prima:

Richard Stevens
Advanced Programming in the Unix Environment
Addison Wesley.

Sempre dello stesso autore, quindi, ma quando si parla di programmazione UNIX questo è l'autore riconosciuto come il migliore. I suoi tre libri, infatti (i due sulla network programming e questo sulla system programming sono considerati i testi di riferimento da moltissime università, sia in Italia sia all'estero).

Io li ho presi tutti e tre. Mi sono svenato. Tutti e tre li ho pagati quasi 240 euro (circa 80 l'uno). Eppure leggendoli, ancora riesco a pentirmene. Ottimi sia per riferimento che per apprendimento.
Ottimo investimento secondo me.