dan64100 Inserito: 25 maggio 2007 Segnala Inserito: 25 maggio 2007 Ciao a tutti,navigando nei sorgenti di libnodave mi sono accorto che la chiusura della connessione, fatta tramite ClosePort (in setportw.c) viene eseguita tramite una chiamata a CloseHandle.Questo non è corretto, un socket aperto con la funzione socket() *DEVE* essere chiuso con la funzione CloseSocket (magari preceduta da shutdown() ), altrimenti il socket non viene deallocato dal pool messo a disposizione da winsock.In parole povere, se nel nostro programma apriamo una connessione e questa resta attiva per sempre ok, altrimenti, se apriamo e chiudiamo la connessione solo quando abbiamo necessità di leggere o scrivere (cosa possibilissima) dopo circa 4000 connessioni (piu' o meno) abbiamo esaurito le risorse di winsock.Possibili soluzioni : 1) Chiamare CloseSocket passando come parametro di->fd.rfd (oppure DaveFDS.rfd se si usa il componente TNoDave per delphi), in questo caso ClosePort non deve essere usata.2) Evitare connessioni multiple.Nel primo caso, la funzione puo' essere chiamata direttamente, in quanto winsock è già stato caricato nello spazio di indirizzamento del nostro programma e WsaStartup è stato già eseguito.Cosa ne pensate ?SalutiDavide
Gabriele Corrieri Inserita: 25 maggio 2007 Segnala Inserita: 25 maggio 2007 Ciao Davidepenso che faresti cosa gradita a Thomas, che parla un italiano molto buono, a scrivere del bug, in modo da poter, nella prossima edizione, averlo corretto.Ciao
Gianmario Pedrani Inserita: 25 maggio 2007 Segnala Inserita: 25 maggio 2007 Ottima analisi... complimenti...
Savino Inserita: 25 maggio 2007 Segnala Inserita: 25 maggio 2007 Quoto tutto quello sopra detto da Gabrilele
dan64100 Inserita: 26 maggio 2007 Autore Segnala Inserita: 26 maggio 2007 Si, quello l'ho fatto subito il post era per prevenire qualche grattacapo nel frattempo, dato che mi sembra che queste lib siano molto utilizzate (a giusta ragione).Saluti
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora