UDPソケットがバインドされているIPアドレスを見つけようとしました(別の方法でコンピュータのIPアドレスを検索したくないと仮定して)。これはどうすればできますか?以下のコードは、ポート番号に動作しますが、常にアドレスの0.0.0.0を返します。UDPソケット(Windows C++)からIP情報を取得するにはどうすればよいですか?
struct sockaddr_in sin;
int addrlen = sizeof(sin);
if(getsockname(clientSock, (struct sockaddr *)&sin, &addrlen) == 0 &&
sin.sin_family == AF_INET &&
addrlen == sizeof(sin)){
printf("RETURNING ADDR: %s: len = %d\n", inet_ntoa(sin.sin_addr),
strlen(inet_ntoa(sin.sin_addr)));
}
ソケットは、次のコードを使用してバインドされました:
sockaddr_in local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;//inet_addr("127.0.0.1");
local.sin_port = 0; //assign given port
result = bind(clientSock, (sockaddr*)&local, sizeof(local));
を任意およびすべての助けをいただき、ありがとうございます。私はあなたの時間を感謝します!
ソケットは複数のインターフェイスでデータグラムを受信します。ただし、どのインタフェースが任意の着信データグラムによってトラバースされたかを判断することは可能です。 –