私の知る限り、sockaddr 構造は次のもので構成されています。
struct sockaddr
{
unsigned short sa_family;
char sa_data[14];
}; `
構造データが既にある場合: そこから IP を取得するにはどうすればよいですか?
struct sockaddrファミリに依存する特定のサブクラスにキャストする必要があります。
AF_UNIXにキャストstruct sockaddrします。struct sockaddr_unAF_INETにキャストstruct sockaddrします。struct sockaddr_inAF_INET6にキャストstruct sockaddrします。struct sockaddr_in6構造体を後者の型のいずれかにキャストすると、その構造体からアドレスを取得できます。アドレスの形式はプロトコルごとに異なり、アドレスを含むフィールドの名前とタイプも異なることに注意してください。たとえば、ファミリが である場合、AF_UNIXからパス名を取得できますsun_path(この場合、IP アドレスのようなものはありません)。ファミリが である場合AF_INET6、IP アドレスとポート番号はそれぞれsin6_addrおよびから取得できsin6_portます。