-1

DNS_SDパッケージの一部としてDNSServiceRegister(...)関数を使用しようとしていますが、「ホスト」の場合、文字列としてホスト名が必要です。ただし、IPアドレスでホストを登録することは可能ですが、IPアドレスはバイナリ表現でフォーマットする必要があります(192.168.1.23ではなく0x1701a8c0になります)。

値1701a8c0を直接渡すことで関数をだますことができると思いますが、試したことは何も機能していないようです。strncpyは期待値を返しません。貼り付けるだけでは機能せず、NSDataを作成すると、NSStringは機能しません。一度にchar配列1エントリを作成するループを作成できますが、別の方法が必要ですか?

    struct sockaddr_in sa;
 ...
        ipBinary=[[NSData alloc] initWithBytes:&(sa.sin_addr.s_addr) length:8];
    ipBinStr=[[NSString alloc] initWithData:ipBinary encoding:NSUTF8StringEncoding];

私はこれのバリエーションを機能させることができませんでした:

        strncpy(str,(char *)&(sa.sin_addr.s_addr),8);
4

1 に答える 1

1

ホストを IP アドレスで登録するには、おそらくアドレスを ASCII 文字列表現 (文字列 "192.168.1.23" など) で渡す必要があります。NI_NUMERICHOSTフラグでinet_ntoa()or bettergetnameinfoを使用して、a を文字列に変換できます。struct sockaddr

于 2012-07-30T09:08:16.550 に答える