Newsgroup: it.comp.lang.delphi
Titolo: [D5e] TClientSocket e indirizzo 127.0.0.1

Salve.
Ho questo problemino per il quale ho gia in mente un possibile workaround,
ma se esiste una soluzione pulita, tanto meglio.
Ho 2 app che dialogano usando un TClientSocket ed un TServerSocket.
Il problema è che se le 2 app girano sullo stesso pc e al clisocket do come
address 127.0.0.1 il server riceve tale indirizzo e non l'ip vero è proprio
tipo 100.100.pippo.qualcosaltro.
Esiste un modo x dire a 'sta chiavica di componente di non inviare nelle
relative prop il fatidico 127.0.0.1 ma il vero ip senza dover fare il
workaround che avevo pensato, che cosniste in un semplice controllo?
function GetIpFromSocket(ASocket: TCustomWinSocket; var AIp: string):
integer;
begin
  AIp := socket.remoteAddress;
  if AIp = '127.0.0.1' then
   AIp := getrealip;
end;
Bye
A.

 A.
Ciao
Andrea

 Se vuoi provare il prg in rete, devi usare 2 pc diversi.
il mio problema non è provare in locale o in rete.
devo prevedere entrambi i casi e devo essere certo di avere SEMPRE
l'indirizzo ip reale e non quello che indica il localhost.
Tnx
A

 specificato nella suddetta prop.
Un problema simile, l'ho affrontato anche io. Tuttavia il non riuscire
a sapere l'indirizzo reale da dove si connette il Client, non era vitale.
Infatti, durante "l'handshake" tra client e server, il client invia un
pacchetto contentente le informazioni di identificazione.
Allo stato attuale, semplicemente NomeClient@IndirizzoIP.
In questo modo, li individuo facilmente.
Addirittura, sotto Win2k, non avendo la rete a casa (pur mantenendo
una scheda di rete nel PC), "ipconfig" non mi fornisce il reale indirizzo
IP.
Comunque, ho provato il toy program lato server e client in un contesto
di rete reale, ed ha funzionato benone.
Hai fatto progressi nel tuo caso?
Saluti

 Hai fatto progressi nel tuo caso?
Un workaround l'ho applicato.
Sara' anche una porcata ma ho tempi + che stretti.
Sono sotto rilascio e devo chiudere tutto x oggi.
By&Tnx
A

 Sono sotto rilascio e devo chiudere tutto x oggi.
Se posso esserti utile in qualche modo, sono a disposizione.
Saluti

 Da dove potrebbe prenderlo?
E' un bug (O feature? eheh) di windows 2000.
Mettendo un IP statico (tipo 192.168.0.1), se il PC non è collegato in rete
non viene mostrato da IPconfig (nè da altre applicazioni)
E' stato corretto col SP3.
Matteo

 E' stato corretto col SP3.
Allora io devo avere 3 versioni bacate del SP3 :)
1 a casa
2 in ufficio
Che c..lo! :)

volendo essere cattivi, credo che il gruppo di api per la lettura dell IP
facciano prima un check sui vari chcp, dns etc.
Se uno di questi check fallisce, exit.
Quindi nessun ip di ritorno...
nel + puro stile di zio billy
A.

 ha scritto nel messaggio
news:VcjJ9.70433$qF1.2...@news2.tin.it...

Raffino la mia risposta.
guarda l'articolo:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q239924
che risponde al tuo problema.
Quando ho citato il SP3, sono andato a memoria. Però mi ricordo che, per
esperienza personale, fino a quando non ho installato il SP3, a casa il mio
indirizzo IP statico non lo vedevo. Ora lo vedo anche senza una rete
collegata. Idem con un PC in uno stabilimento staccato dell'azienda, sul
quale non riuscivo a capire perchè non volesse rilevare l'IP statico che gli
mettevo. prima di riformattare, invece funzionava. Ho poi capito che prima
avevo installato il SP3, mentre nella reinstallazione non l'avevo con me e
quindi c'era solo W2000 con SP2 preinstallato.
Ciao
Matteo

Ciao Alberto,
Hai dato un'occhiata a questa funzione?
GetHostByName(buffer);
Ti ritorna queste informazioni:
struct hostent {
    char FAR *       h_name;
    char FAR * FAR * h_aliases;
    short            h_addrtype;
    short            h_length;
    char FAR * FAR * h_addr_list;
};
h_addr_list contiene l'indirizzo IP.
Fammi sapere se funge nel tuo caso.
Saluti

tnx, Carminie'!
Appena no 30 millisecondi di respito provo anche questa.
baiBai
A.