View Full Version : [C++]Tutorial Socket
MaxGuevara
05-02-2008, 03:22
Ciao a tutti.
Volevo imparare qualcosa sui socket e sul networking.Per iniziare mi interessava capire come funzionano i sockets e come poter "dialogare" con un server.Creare insomma una specie di programma simile a telnet,ma molto + semplice.
Qualcuno ha una buona guida a riguardo da consigliarmi?
trallallero
05-02-2008, 10:41
Windows o Linux?
APPUNTO!!!
come è possibile che su Windows (XP) non ci sia il flag MSG_WAITALL da passare alla funzione recv ??? :mbe:
come fai a dirgli di aspettare tutto il msg ?
volevo aprire un 3d ma sfrutto questo se non dispiace
ilsensine
05-02-2008, 10:45
come è possibile che su Windows (XP) non ci sia il flag MSG_WAITALL da passare alla funzione recv ??? :mbe:
Perché è br0ken come design.
come è possibile che su Windows (XP) non ci sia il flag MSG_WAITALL da passare alla funzione recv ??? :mbe: 1) controlla meglio che c'è: http://msdn2.microsoft.com/en-us/library/ms740121.aspx
2) non lo usare: un flusso di dati TCP/IP è concepito come un flusso, appunto, non come una serie di messaggi di cui puoi attendere la "fine"; non c'è la fine, è tutto attaccato.
3) non usarlo perché MSDN mi dice che il transport provider non è obbligato a supportarlo :mbe: (e posso capirlo perfettamente, per il punto 2).
trallallero
05-02-2008, 12:53
Perché è br0ken come design.
1) controlla meglio che c'è: http://msdn2.microsoft.com/en-us/library/ms740121.aspx
2) non lo usare: un flusso di dati TCP/IP è concepito come un flusso, appunto, non come una serie di messaggi di cui puoi attendere la "fine"; non c'è la fine, è tutto attaccato.
3) non usarlo perché MSDN mi dice che il transport provider non è obbligato a supportarlo :mbe: (e posso capirlo perfettamente, per il punto 2).
ok, grazie. Tanto non lo sto facendo io (ma lo uso), faccio solo da portavoce perchè 'sti trogloditi di crucchi non usano i forum :D
comunque non capisco il problema: io l'ho usato nel lontano 2001 per la Edison Tel ed andava alla grande (Unix, of course).
Leggevo i primi 2 bytes per la lunghezza del msg con MSG_WAITALL
poi leggevo i prossimi lunghezza bytes dalla rete per il resto del messaggio sempre con MSG_WAITALL.
Andava alla grande
ilsensine
05-02-2008, 13:51
comunque non capisco il problema: io l'ho usato nel lontano 2001 per la Edison Tel ed andava alla grande (Unix, of course).
Allora devo perdere tempo con un piccolo elenco...
- Non c'è garanzia che il waitall sia rispettato in caso di segnali o disconnessioni. Leggi la manpage. Devi quindi scrivere il codice di recupero se vuoi un programma affidabile, che vanifica l'utilità della waitall.
- Non c'è controllo sui timeout (porte aperte ai DoS)
- Non aggiunge alcuna funzionalità in più; demanda semplicemente al kernel un lavoro che puoi fare da codice (più efficacemente inoltre)
trallallero
05-02-2008, 13:57
Allora devo perdere tempo con un piccolo elenco...
- Non c'è garanzia che il waitall sia rispettato in caso di segnali o disconnessioni. Leggi la manpage. Devi quindi scrivere il codice di recupero se vuoi un programma affidabile, che vanifica l'utilità della waitall.
- Non c'è controllo sui timeout (porte aperte ai DoS)
- Non aggiunge alcuna funzionalità in più; demanda semplicemente al kernel un lavoro che puoi fare da codice (più efficacemente inoltre)
pensavo invece che fosse più sicuro lasciare al kernel il compito di gestire la cosa.
Vabbè, grazie.
MaxGuevara
05-02-2008, 22:48
Scusate per la dimenticanza.Mi serve per Windows.Per codare uso Dev c++.
Grazie.
Scusate per la dimenticanza.Mi serve per Windows. in tal caso trovi tutto qui: http://msdn2.microsoft.com/en-us/library/ms740673(VS.85).aspx
Per codare uso Dev c++. sconsigliatissimo. se puoi evitarlo installati Visual C++ 2008 Express: http://www.microsoft.com/express/vc/
MaxGuevara
06-02-2008, 23:29
in tal caso trovi tutto qui: http://msdn2.microsoft.com/en-us/library/ms740673(VS.85).aspx
sconsigliatissimo. se puoi evitarlo installati Visual C++ 2008 Express: http://www.microsoft.com/express/vc/
Grazie mille del consiglio.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.