2012-11-11 1 views
3

Linux 소켓 API 용 C++ 래퍼를 작성하려고합니다. socket()에서 adress family (AF)가 요청됩니다. 소켓의 생성자에서 이미 제공 되었기 때문에 AF를 connect() 시그니처에 다시 요구하고 싶지 않습니다. 그렇다면 기존 소켓에서 AF를 얻으려면 어떻게해야합니까?소켓에서 주소 패밀리를 가져옵니다. Linux

+0

이 기억 래퍼의 멤버 변수에 주소 패밀리? – nos

답변

6

젠장. 30 분 경 검색했습니다. 지금이 질문을 게시 한 후 나는 답을 찾았다.

옵션 SO_DOMAIN와

getsockopt([...]) POSIX 표준 getsockname을 도움이 될

+3

이 옵션은 리눅스에만있는 것으로 보이므로주의하십시오. 래퍼 클래스를 작성하는 경우 형식을 멤버 변수로 저장할 수 없습니까? –

+0

좋은 아이디어 ... 감사합니다. – ManuelSchneid3r

5

(socket options 참조)

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

그것 (성공시) 주어진 구조체 SOCKADDR를 입력합니다 :

struct sockaddr { 
    unsigned short sa_family; // <- that's what you looking for 
    char    sa_data[14]; 
} 
관련 문제