私はC++でのUpNPの実装に取り組んでおり、ソケットを機能させるには、ルーターによって割り当てられたローカル内部IPアドレスを取得する必要があります。必要なアドレスは、ルーターに接続されているコンピューターと各コンピューターに割り当てられているローカルIPを示すルーターに表示されるアドレスです。私はこれを使用しています:
PHOSTENT Addr = NULL;
char Host[MAX_PATH];
if( gethostname(Host, sizeof(Host)) == 0 )
{
Address = gethostbyname( Host );
if( Address != NULL )
{
//*(struct in_addr *)Address->h_addr_list[0]) <- this is my address
}
}
これは私がテストしているコンピューターでは正常に機能しますが、そのコンピューターにはネットワークカードが1つしかないため、コンピューターに複数のカードまたはネットワークデバイスがある場合、Address->h_addr_list[0]は私が持っているものではないのではないかと思いました。必要であり、その配列の別のインデックスにある可能性があります。
[0]は常にルーターによって割り当てられたIPを取得しますか?