2015-01-11 2 views
2

은 내가 사용할 수 있습니다 확인AnyEvent :: 소켓과 추상적 인 UNIX 소켓 소켓

socket(my $socket, AF_UNIX, SOCK_STREAM, 0) 
    or die "socket: $!"; 
my $sock_addr = sockaddr_un(chr(0).'/abstract/socket'); 
connect($socket, $sock_addr) or die "connect: $!"; 

모두를. 나는 연결하고 전달할 수있다; AnyEvent :: 소켓

:

tcp_connect "unix/",chr(0).'/abstract/socket' , sub { 
    my ($fh) = @_ 
     or die "unable to connect: $!"; 
    ... 
} 

얻을 오류 : unable to connect: No such device or address at file.pl line X. Anyevent :: 소켓과 추상적 인 UNIX 소켓을 사용하는 방법

?

답변

1

안녕하세요,이 답변은 AnyEvent :: Socket이 추상 소켓을 지원하지 않는다는 간단한 대답입니다.

더 긴 대답은 그것이 정말로해야한다는 것이며, 내가 볼 수있는 한 작은 감시가 작동하지 못하는 것을 볼 수 있습니다. $service !~ /^\//; # no can do가 작동을 방해하는 것입니다 읽어 줄의

if ($node eq "unix/") { 
     return $cb->() if $family || $service !~ /^\//; # no can do 

     return $cb->([AF_UNIX, defined $type ? $type : SOCK_STREAM, 0, Socket::pack_sockaddr_un $service]); 
    } 

부분 :

하위 resolve_sockaddr

내 버전의 범인, 라인 (718)이다.

필자의 경우 필자는 그 라인을 주석 처리했으며 작동했지만 실제로는 정규 소켓 경로를 나타 내기 위해 앞의 \0을 허용하는 정규식을 수정해야합니다. 라이브러리

  • 밀어 마크 레만 상류 변화의 로컬 복사본을 수정

    • 원숭이
    • 구현 기능을 패치 그는 패치를 받아 희망 :

      당신은 몇 가지 옵션이 추상 도메인 소켓을 지원하는 자신의 모듈

    행운을 빈다.