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