Newsgroup: it.comp.lang.delphi
Titolo: [Indy] Socket Error #10038 durante tentativo connessione IdTCPClient

Ciao a tutti,
come da oggetto quando tento di effettuare la connessione via socket
tramite IdTCPClient mi restituisce l'errore 10038 socket operation on
non-socket.
Lo spezzone di codice sorgente è questo:
IdTCPClient1.BoundIP := '192.168.1.10';
IdTCPClient1.BoundPort := 0;
IdTCPClient1.Host := '192.168.1.5';
IdTCPClient1.Port := 20001;
IdTCPClient1.ConnectTimeOut := 1000;
IdTCPClient1.IPVersion := IdGlobal.TIdIPVersion.Id_IPv4;
IdTCPClient1.Connect; <----------ERRORE
Qualcuno sa dirmi per quale motivo non effettua la connessione? Manca
qualche parte di codice? Uso Win7 e Delphi2010.
Grazie mille dell'aiuto.

Secondo me hai scritto anche troppo..ma magari su d2010 le cose sono
diverse.
Comunque, lato SERVER, cosa ci sta?
...non e' che sulla porta 20001 gira qualcosa che non è tcp ma un
altro protocollo tipo UDP o Http?
A.


Allora, in pratica ho un "box" collegato al PC tramite ETH che mi
invia una stringa di dati e per recuperarli devo prima configurare
l'apparecchio per impostargli la porta e l'IP del PC (quindi PC client
e box server) per poi mettere in ascolto il PC e attendere i dati dal
box (quindi PC server e box client). La trasmissione sono sicuro che
avviene itramite TCP e la porta è corretta. Effettuo anche una
connessione UDP per effettuare la ricerca dei box collegati in rete e
funziona senza problemi.
Piccolo aggiornamento:
il codice in questione è inserito in una DLL che viene richiamata da
un BPL; IdTCPClient fa parte della classe ETHConnection che creo
quando la DLL viene richiamata e facendo il debug mi sono accorto che
appena viene eseguito il comando Connect, ETHConnection assume un
valore nil senza alcun motivo apparente e infatti quando verifico che
la connessione sia avvenuta mi ritorna un access violation poichè la
classe "padre" viene liberata.
Da cosa può dipendere? Spero di essermi spiegato decentemente.
Grazie mille

 valore nil senza alcun motivo apparente e infatti quando verifico che
scusa, fai una prova semplice e vedi cosa succede...
Butta un tidtcpclient su un form, aggiungi un pulsanti, fagli mandare
qualcosa e vedi se esplode.
A


Già fatto..mi sputa in faccia. Ora sto eseguendo il debug di tutta la
DLL ma ogni volta mi trova errori nuovi che non si sono mai presentati
e la DLL è sempre la stessa! Misteri della tecnologia..spero solo di
uscirne vivo.
Per ora grazie, intanto comincio a scremare i vari errori che saltano
fuori.
P.S.
nel box ci tengo una Maserati GranTurismo ;) devo solo metterci un po
di scotch senò si stacca dalla parete.

 wrote:

Altro giro altro regalo. Giuro non ci sto capendo più niente.
Fino a un paio d'ore fa la ricerca UDP in broadcast funzionava
perfettamente, era l'unica connessione che veniva fatta senza errori;
adesso manco quella e senza cambiare una virgola al sorgente! Ogni
volta che tento di connettermi mi ritorna l'errore "winsock resolve
host: invalid hostname". Uso il componente della ICS per la parte UDP
e non Indy che invece utilizzo per la parte TCP.
Di seguito le tre righe in croce del sorgente:
UDPSocket.Proto := 'udp';
UDPSocket.Port := '20002';
UDPSocket.LocalPort := '20003';
UDPSocket.Addr := '255.255.255.255';
UDPSocket.Connect; <------- ERRORE!!!
Cosa diavolo sta succedendo a sto benedetto PC???? Cosa c'è che non va
in quelle righe di codice???? Sto impazzendo.

 e la DLL è sempre la stessa!
Forse non mi sono spiegato bene..La dico in un altro modo...
1) Metti da parte la tua dll
2) crea un exe, gli butti un form con un tidtcpclirnt A DESIGN TIME e
un pulsante
3) al click del pulsante, gli fai aprire il socket e vedi cosa
succede...
A.

 adesso manco quella e senza cambiare una virgola al sorgente!
1) la tua porta ethernet e' andata "ai festini del nano di arcore"...
2) la porta ethernet del box  e' andata "ai festini del nano di
arcore"...
3) il box e' andato "ai festini del nano di arcore"...
I suggerimenti per le prove da fare sono scontati.
A.