Ho il socket DWORD in Windows. Ho bisogno di sapere se si tratta di una connessione che esce su Internet o se si tratta di una connessione locale, a qualche forma di localhost. C'è un buon modo per ottenere l'indirizzo a cui è collegato il socket in Windows dal solo socket? O c'è un modo migliore per dire se la connessione è locale o no?Come ottenere l'indirizzo IP dalla presa In Windows
5
A
risposta
5
Probabilmente si desidera chiamare getpeername()
. Usarlo è piuttosto semplice, si passa un puntatore sockaddr
e una lunghezza e si riempie i dati per voi.
Per quanto riguarda la determinazione della connessione locale, getaddrinfo()
può fornire un elenco di tutti gli indirizzi locali disponibili. Si confronta il risultato di getpeername()
nell'elenco di indirizzi locali.
Devi stare attento con IPv6. Molto probabilmente non hai creato il socket da solo (altrimenti potresti ricordare a cosa è collegato), quindi probabilmente stai utilizzando qualche socket creato altrove. E dal momento che è fuori dal tuo controllo, potrebbe utilizzare IPv6. – MSalters