Newsgroup: it.comp.lang.delphi
Titolo: Mistero: eventi scomparsi in TTCPServer (Delphi 7)

Salve a tutti!
Innanzi tutto scusate l'oggetto molto da "cronaca nera"...
Mentre ero intento, come al solito ultimamente, a sviluppare il mio progetto 
di Reti per l'Università in Delphi mi sono imbattuto in un'altra stranezza 
di TTCPServer (Delphi 7, palette Internet)...
Quando un client comunica con il TTCPServer (gli invia dei dati), si 
dovrebbe attivare l'evento OnReceive: qui si leggono i dati, li si 
interpretano, e si risponde di conseguenza, in modo da realizzare un piccolo 
protocollo di rete...
Prima avevo sempre usato ServerSocket e ClientSocket (versioni deprecate di 
TTCPServer e TTCPClient), e quando sono andato a cercare l'evento OnReceive 
per scrivere il mio codice di risposta mi sono accorto che quell'evento non 
c'era!!! Controllo nell'help di Delphi e vedo che invece dovrebbe esserci 
assieme al suo analogo OnSend, che invece anche lui manca...
Credo di avere la versione di Delphi 7 più aggiornata possibile (Delphi 7, 
Build 8.1), e vorrei sapere se sono solo io ad avere questo problema o se è 
proprio un bug... Devo rimboccarmi le maniche e correggere i sorgenti? è 
legale? Lo so che c'è anche Indy, ma io ho bisogno di qualcosa di leggero...
Grazie in anticipo per le eventuali conferme e smentite, ciao,
            Stefano 

 legale? Lo so che c'è anche Indy, ma io ho bisogno di qualcosa di leggero...
Bisogna vedere cosa intendi per "leggero"...
Dopotutto, i componenti che utilizzi sono particolarmente datati e 
dichiarati da tempo come obsoleti; forse nell'usare i componenti Indy 
puoi trovare molte facilitazioni in grado di alleviarti il compito di 
produrre un piccolo protocollo di rete. :-)
Ciao! :-)
-- 
Marco «Alka» Breveglieri
  (marco [@] abls [.] it)
  ABLS Team S.n.c. - Software & Web
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

Ciao Marco!
Ho provato ad assegnare a runtime il mio codice all'evento OnReceive, ma
senza successo: quel codice non viene eseguito...
Devo realizzare questo progetto per reti di calcolatori: ho già scritto la
documentazione preliminare e un po' di diagrammi UML... Ora sto passando
allo sviluppo vero e proprio...
Durante il corso, il professore ha mostrato alcuni esempi in C e in java...
Per il progetto possiamo usare il linguaggio che preferiamo...
L'unico vincolo che ci è stato posto è stato quello di usare le socket: i
componenti più semplici possibile, perchè dobbiamo dimostrare di avere
dimestichezza con questi concetti e non di saper utilizzare componenti
complessi e completi che "fanno quasi tutto da soli"...
Le socket in Java sono gestite in modo molto semplice ma non mi trovo per
niente con tutto il resto del linguaggio... una volta provate le comodità di
Delphi è difficile tornare indietro...
In C si vanno a richiamare direttamente le primitive dentro WinSock... e a
mio giudizio si eccede nello scendere a basso livello...
A dirla tutta sono un po' disorientato... in Delphi ci sono i TServerSocket
e i TClientSocket, ma se TTCPServer e TTCPClient sono deprecati, quelli sono
deprecatissimi... se non ci sono alternative darò un occhio ai componenti
Indy... ma temo che non piaceranno al professore e che mi toccherà passare a
java...
Già che ci sono, allora, ti faccio un'altra domanda: non è strettamente
inerente a Delphi come linguaggio, ma magari tu o qualcun altro con la
vostra esperienza mi saprete dare una dritta che mi farà risparmiare molto
tempo...
Nel newsgroup borland.public.delphi.internet.winsock ho letto di un tale che
voleva usare 127.0.0.4 come indirizzo di localhost... all'inizio anche io
sono inorridito, poi leggendo che lui in passato lo faceva ho letto meglio:
ad eccezione di WinXP SP2 che necessità di una patch, le altre versioni di
Windows permettono questi loopback diversi da 127.0.0.1... così ho pensato
di sfruttare questo fatto per provare in locale la correttezza dei miei
protocolli di rete facendo interagire più istanze della mia applicazione
contemporaneamente... le socket vengono messe in ascolto su porte
prederminate e quindi su una stessa macchina potrei far girare una sola
istanza del programma... ho pensato di trasformare il mio programma in una
finestra MDIChild in modo da averne più copie dentro una MDIForm... una
volta ottenuto un risultato accettabile, basta rimettere la finestra
MDIChild in Normal ed il gioco dovrebbe essere fatto... Per ora ho notato
che i TTCPServer e TTCPClient mi permettono di usare i localhost multipli,
TServerSocket e TClientSocket no... insomma non c'è un componente che
risponda contemporaneamente a tutte le mie esigenze... vista la mia scarsa
esperienza michiedo: sono almeno su una buona strada?
Grazie di tutto, se non altro di aver letto questo mezzo sfogo,
                Stefano

 contemporaneamente... 
mi sono perso un attimo...
Hai una sola app che fa sia da client che da server?
Usi una sola porta oppure usi porte diverse con diverse istanze del server?
Usi un socket sincrono o asincrono?
-- 
Alberto Salvati
A NEAPOLITAN Delphi Developer who is studying c# and .net
"Dicette 'o pappece 'nfaccia 'a noce dammi 'o tiempo che pure te spertoso"

 ha scritto nel messaggio 
news:d39ghj$p41$1...@newsreader2.mclink.it...


Per ora pare che la strada che ho indicato nel post precedente sia 
percorribile...
Questi componenti permettono esplicitamente in binding dell'ip locale con un 
ip a scelta, anche tra 127.0.0.X...
Non so se a qualcuno possa interessare, lo riporto per completezza...
Stefano