Newsgroup: it.comp.programmare.win32
Titolo: Comunicare in rete

Ambiente windows, VC++ 6.0 prof., MFC.
Mi e' stato chiesto, per un programma, di comunicare in rete locale (cioe'
una specie di chat fra due macchine collegate).
Non so nulla dell'argomento: potete darmi qualche riferimento per l'MSDN o
qualche informazione essenziale?
Grazie,
Marco

:

Prima di tutto dovresti decidere quale sistema di comunicazione utilizzare.
Ci sono diverse alternative, tra cui:
- winsockets, richiedono una rete locale TCP/IP ma, in compenso, possono 
funzionare su qualsiasi rete TCP/IP (da un collegamento modem 2 modem o 
seriale con PPP a internet). Potresti considerare l'idea di utilizzare uno 
dei protocolli standard per il chat o per lo scambio di messaggi in rete e 
magari trovare qualcosa di già sviluppato (almeno a livello di esempio).
- named pipes, sono più indipendenti dal protocollo di rete utilizzato e 
forse più semplici a livello di API, ma almeno una delle due macchine deve 
essere una macchina NT/2000.
- varie ed eventuali... (DCOM, netbios...)
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)

 Prima di tutto dovresti decidere quale sistema di comunicazione
utilizzare.
Non e' chiaro dalle specifiche che ho, ma credo si tratti non di gestire
collegamenti qualsiasi ma solo tra macchine in rete locale.
Del tipo del solitario hearts, per intenderci. Presumo si basi su tcp/ip, ma
non ne so nulla.
Diciamo che devo fare (la gestione del gioco in rete di) hearts: da dove
inizio con MSDN? C'e' una serie di classi dedicate?
Scusate per la vaghezza, ma non ne so proprio nulla.
Marco


Credo che hearts si basasse sul netDDE (ormai caduto nel dimenticatoio, 
credo), sicuramente non su TCP/IP visto che ai tempi giocavamo su una rete 
novell :)
Ti potrei suggerire di usare TCP/IP che ti potrebbe garantire in futuro la 
possibilità di sviluppare "client" per altre piattaforme.
Non c'è un topic preciso in MSDN, ricordo una serie di articoli (ormai 
abbastanza datati) che confrontavano i diversi sistemi di comunicazione in 
rete utilizzandoli per realizzare un programmino di chat, ma al momento non  
saprei indicarti un indirizzo preciso.


 possibilità di sviluppare "client" per altre piattaforme.
Bene. Usando MFC c'e' qualche classe dedicata - ad esempio posso usare in
qualche modo CInternet*, CSocket o sono troppo specifiche? Oppure quali sono
le API principali?
Primo problema tecnico: posso sapere da sistema gli indirizzi delle macchine
collegate in rete locale (e magari anche decidere se c'e' o meno una rete
locale)?
Grazie ancora,
Marco


Per il primo punto la risposta non è semplice. 
Puoi enumerare i PC della rete locale ma non è detto che vengano elencati 
tutti i PC a cui ti potresti collegare (soprattutto in una rete complessa).
Per il secondo punto, dipende dal protocollo che hai deciso di utilizzare.
Generalmente per controllare se il TCP/IP è installato ti basta provare a 
inizializzare winsock. Non esiste (perlomeno non su tutte le versioni di 
windows) un modo affidabile per verificare se il PC è in rete o utilizza un 
a connessione dial-up.


 a connessione dial-up.
Grazie mille, credo che iniziero' col TCP/IP.
Se avete altre informazioni sono le benvenute.
Marco

 collegate in rete locale
Dovresti mandare un pacchetto ICMP in broadcast e analizzare le risposte, ma
queste sono gia` cose piu` complesse che non credo si facciano con i socket
di MFC.
---
Bye! Lorenzo Lutti
http://antani.virtualave.net/