Non ho letto tutto il codice postato, non ho molto tempo ora, però tieni presente questo di seguito.
Innanzitutto su una rete di computer ogni interfaccia di rete (cablata o wireless che sia) è identificata da un indirizzo IP (v4 e/o v6) che può essere assegnato staticamente o dinamicamente tramite DHCP. Ma di certo deve essere univoco all'interno della rete, altrimenti ci sono conflitti e problemi vari. Il 127.0.0.1 è il "loopback" e nessuno lo vede sulla rete. È solo ad uso interno della macchina.
Quindi ogni interfaccia sulla rete ha un indirizzo che sicuramente non è il loopback.
Quando la accept() ti fornisce un Socket, esso contiene di base 4 informazioni: l'indirizzo e porta locale (del server) e l'indirizzo e porta "remoti" (del client). E questi ultimi sono appunto fondamentali per individuare l'endpoint a cui è connesso il server!