Ho un programma che consiste in un server master e server slave distribuiti. I server slave inviano aggiornamenti di stato al server e, se il server non ha ricevuto notizie da uno specifico slave in un determinato periodo, contrassegna lo slave come inattivo. Questo sta accadendo in modo coerente.Impossibile assegnare l'indirizzo richiesto - possibili cause?
Dall'analisi dei registri, ho rilevato che lo slave è in grado di inviare solo un aggiornamento di stato al server e quindi non è mai in grado di inviare un altro aggiornamento, sempre in mancanza della chiamata per connettersi() "Impossibile assegnare l'indirizzo richiesto (99)
Stranamente, lo slave è in grado di inviare diversi altri aggiornamenti al server e tutte le connessioni si verificano sulla stessa porta. Sembra che la causa più comune di questo errore sia che le connessioni sono lasciato aperto, ma ho difficoltà a trovare qualcosa lasciato aperto Ci sono altre possibili spiegazioni?
Per chiarire, ecco come mi sto connettendo:
struct sockaddr *sa; // parameter
size_t sa_size; //parameter
int i = 1;
int stream;
stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
Questo codice è in una funzione per ottenere una connessione a un altro server e un errore in una di queste 4 chiamate causa la mancata riuscita della funzione.
Ho verificato che la porta e l'indirizzo IP sono entrambi corretti. – dbeer