Newsgroup: it.comp.lang.delphi
Titolo: Non trovo l'evento Indy - SocketRead...

Salve a tutti del ng, sto tentando di sostituire la mia vecchia 
applicazione che lavora con i socket di(D5) con i nuovi Indy del (D7), 
Oggi non sono riuscito a trovare il corrispondente evento lato 
server "ClientSocketRead" e lato client "ServerSocketClientRead".
La mia č una piccola applicazione che ascolta le richieste del Server o 
del Client per eseguire un export da un db e stampare a video i campi 
necessari.
Desideravo effettuare come si suol dire il porting della mia proc.
Ringrazio tutti anticipatamente.
--- posted by geoForum on 
http://www.delphiedintorni.it

server "ClientSocketRead" e lato client "ServerSocketClientRead".
Lato client, crea un thread parallelo che rimane in ascolto verso il
server (vedi i metodi Read*() del TIdTCPClient) e solleva un evento
non appena riceve i dati.  Lato server, devi gestire la lettura
sull'OnExecute, che si scatena per tutti i thread attualmente
collegati al server.  Cerca su Google per gli esempi, ce ne sono a
bizzeffe.

 La mia è una piccola applicazione che ascolta le richieste del Server o


TServerSocket e TClientSocket[...]
Non esistono in D7.


Intanto vi ringrazio entrambi, solo adesso posso farlo visto che sono 
stato fuori uff.
Domani mattina proverò entrambi le soluzioni, e  più tardi potrò essere 
in grado di chiarire quale strada mi è più conveniente.
GRAZIE ancora,
Filippo.



Salve Andrea, in D7  esistono entranbi i componenti e si trovano proprio 
nella Palette internet con nomi diversi ma ci sono, TcpClient e 
TcpServer e sembra che funzionino come i vecchi TserverSocket e 
TClientSocket di D5, invece su gruppi google ho trovato parecchia roba 
come da te indicatomi sui thread con i quali in effetti desidero 
effettuare il porting.
Grazie ancora Andrea.
Ps.
Leggendo tra i vecchi post ho trovato un messaggio di Marco Breveglieri 
nel quale indicava questo indirizzo per ulteriori notizie su Thread, 
sbirciando un pochino ho potuto notare che questo articolo è esposto 
molto bene, potrebbe servire anche ad altri del NG.
http://groups.google.it/group/it.comp.lang.delphi/msg/9bef0b8b1e0e20ae
?
hl=it&lr=&ie=UTF-8.
Saluti Filippo.


Ciao Giorgio
Ciao Giorgio, ho potuto fare delle prove con questi componenti e 
funzionano (bene) come quelli di D5 TClientSocket e TServerSocket.
Invece desidero cambiare totalmente la mia appz utilizzando i componenti 
Indy.
Al momento leggo i dati in un server collegato sulla stessa rete locale, 
e  fin qui nessun problema, ma fra non molto tempo avrò la necessità di 
andare a leggere i dati su un server con Win2003 SqlServer che si trova 
in un'altra dislocazione remota,i client potrebbero diventare parecchi e 
non vorrei trovarmi con qualche sorpresa. 
Con ciò voglio semplicemente incominciare ad avere qualche 
esperienza-info in più prima che cio si verifichi.
Se anche tu sai indicarmi qualcosa in più ti ringrazio ulteriormente.
Saluti Filippo.


TClientSocket di D5[...]
Sě, hai ragione.  Personalmente non mi sono mai interessato a loro
perché preferisco usare la suite Indy, che funziona bene (anche se
scritta un po' alla cavolo).


Ho fatto diverse prove con la suite di Indy, ma almeno di mie carenze 
sulla conoscenza di questo comp nn riesco a far scatenare l'evento che 
mi lancia sul mio pc il codice per rispondere al mio Client o Server che 
abbia fatto richiesta.
Io non mi riferisco alla chat naturalmente ma ad uno scambio dati tra il 
mio pc dove risiede la mia info e questo lettore dal quale avviene la 
richiesta.
Per chiarezza ogni mattina gli impiegati di questo ufficio devono 
registrarsi facendo leggere un codice a barre su questo lettore il quale 
registra data e ora ingresso e/o data e ora uscita in un db dove risiede 
la mia appz, mentre con un ean diverso da quello degli impiegati posso 
avere delle info direttamente sul lettore.
Bene a scriverci sul lettore riesco con IdTcpClient.WriteLn('Ciao') ma 
non riesco a ricevere questo benedetto codice che  scatenerebbe quanto 
descritto sopra, utilizzo IdTcpServer.
procedure TformServer.TCPServerExecute(AThread: TIdPeerThread);
begin
  with AThread.Connection do
  begin
    while Connected do begin
      ReadLn;
      WriteLn('Hello from Basic Indy Server server.');
    // Disconnect;
    end;
  end;
end;
Questa proc non si scatena mai. :(((
Ciao Filippo.


Questa proc non si scatena mai. :(((
A questo evento viene passato un AThread, quindi è ovvio che l'evento
può scatenarsi solo quando c'è almeno un thread connesso.

Ciao Andrea, 
forse non ho capito bene io, la mia intezione è quella di sviluppare 
solo due appz separate,(così come già ho fatto con il componente di D5 
TcpClient e TcpServer), le due appz non colloquieranno mai, per 
intenderci:
- Prima appz solo lato client la quale permette il collegamneto con un 
solo lettore.
- Seconda appz solo lato server la quale permette il collegamneto di più 
lettori.
Ma le due appz non si interfacceranno mai, il lettore di cui io ti parlo 
scrive sempre e solo sul socket, attraverso la propria configurazione 
riesco a settarlo solo client o solo server, indicando semplicemente 
l'indirizzo IP del lettore, la porta e l'indirizzo IP del server.
Allora mi sorge il dubbio che i due componenti della suite Indy
(IdTcpClient - IdTcpServer) per funzionare devono essere per forza 
collegati assieme in due appz distinte e separate??
Per quanto riguarda gli altri tipi di ReadLn,ReadBuf,Readecc.. le ho 
provate riesco solo a beccare qualcosa solo nell'evento Onconnect di 
IdTcpServer, dopo di che nulla.


collegati assieme in due appz distinte e separate??
No.