4

LinuxSocketAPI用のC++ラッパーを作成したいと思います。socket()ctorで、アドレスファミリ(AF)が要求されます。ソケットのコンストラクターですでにAFが指定されているため、connect()シグニチャーでAFを再度要求したくありません。では、既存のソケットからAFを取得するにはどうすればよいですか?

4

2 に答える 2

7

くそ。約30分検索しました。この質問を投稿した後、私はすぐに答えを見つけました。

オプションSO_DOMAINを使用したgetsockopt([...]) (ソケットオプションを参照)

于 2012-11-11T13:42:38.180 に答える
6

POSIX-標準のgetsocknameが役立ちます:

int getsockname(int socket, struct sockaddr *restrict address,
       socklen_t *restrict address_len);

指定されたstructsockaddrを(成功すると)入力します。

struct sockaddr {
    unsigned short    sa_family;  // <- that's what you looking for
    char              sa_data[14];  
}
于 2012-11-17T22:45:10.757 に答える