Tolto che non conosco Delphi quanto da te descritto non è da considerarsi un programma di ping.
Ping, infatti, utilizza il protocollo ICMP che non prevede l'utilizzo di porte e allo stesso modo non prevede un concetto di "connettività" in senso classico (non viene instaurata una vera e propria connessione tra i due host).
Per fare quanto da te descritto ti dovrai affidare al protocollo TCP sviluppando una banale applicazione client/server utilizzando le librerie socket.
Con TCP:
Lato server binderai un socket su una determinata porta.
Lato client creerai un ciclo che ogni tot secondi tenterà di connettersi a ip_remotoorta portandosi dietro un payload contenente una stringa del tipo: "sei online?".
Il server legge la stringa. Se è == a "sei online" risponde con un pacchetto contenente una stringa == "si sono online".
Se il client riceverà tale stringa stamperà a video una scritta (o un pop-up o quello che preferisci).
Con ICMP:
Se preferisci il classico 'ping' lato client dovrai scrivere un applicativo che ogni tot secondi manda un ICMP di tipo ECHO(request) alla macchina remota. Se la macchina remota risponde con un ECHO_REPLY significa che è online.
Questa scelta risulta essere più semplice in quanto dovrai scrivere un solo programma dato che a rispondere al tuo 'ping' ci penserà il kernel della macchina remota in modo automatico ma allo stesso tempo risulta essere un pelino più complicato per quanto riguarda l'implementazione.
Naturalmente sulla macchina remota non ci dovrà essere un firewall che droppa il protocollo ICMP. Per l'implementazione in Delphi non ti so aiutare ma in linea di massima la creazione di un programma di ping è relativamente semplice ed è uguale per tutti i linguaggi:
crei un pacchetto IP in cui incapsulerai l'ICMP di tipo ECHO che spedirai tramite un socket di tipo RAW e con lo stesso resterai in ascolto per eventuali risposte.
Cerca con google "ping in delphi" e prova a dare uno sguardo a questo topic:
http://forum.html.it/forum/showthrea...highlight=icmp
Saluti

orta portandosi dietro un payload contenente una stringa del tipo: "sei online?".
Rispondi quotando