내 코드가 열린 소켓으로 전달됩니다. 이 소켓은 TCP 소켓 (AF_INET
)이거나 Unix 도메인 소켓 (AF_UNIX
) 일 수 있습니다.오픈 소켓이 TCP 또는 유닉스 도메인 소켓인지 어떻게 알 수 있습니까?
소켓의 도메인에 따라 다르게 처리해야합니다. 특히 소켓이 주소에 바인딩되어있는 경우에는 accept
들어오는 연결을 다른 방식으로 사용할 수 있습니다.
내가 전달한 소켓이 유닉스 도메인 소켓인지 또는 TCP 소켓인지를 확인하는 가장 좋은 방법은 무엇입니까? 이 솔루션은 적어도 OS X 및 Linux에서 작동해야합니다.
getsockopt
은 소켓 유형 (예 : SOCK_STREAM
등)을 가져올 수는 있지만 도메인은 허용하지 않는 것으로 보입니다.
getsockname
는 OSX에 유닉스 도메인 소켓을위한 제로 길이를 반환하지만이 공식적으로 bug 리눅스 동작은 different입니다.