in reply to Re: X or console?
in thread X or console?

What is your port_not_listening()? here's mine:

sub port_not_listening { # UNTESTED my $timeout = 10; my ($remote, $port) = split(/:/, $_[0]); $iaddr = inet_aton($remote) or return 1; $paddr = sockaddr_in($port, $iaddr); $proto = getprotobyname('tcp'); # X uses tcp, right? socket(SOCK, PF_INET, SOCK_STREAM, $proto) or die "socket: $!"; eval { local $SIG{ALRM} = sub { die "connection timeout\n" }; alarm $timeout; connect(SOCK, $paddr) or die "$! for $remote\n"; alarm 0; }; return 1 if ( $@ ); return 0; }

Update: Halley points out correctly (below) that the line my ($remote, $port) = split(/:/, $_[0]); is unlikely to actually yield a correct port number.

--Bob Niederman, http://bob-n.com

Replies are listed 'Best First'.
Re: Re: Re: X or console?
by halley (Prior) on Jul 23, 2003 at 19:09 UTC
    Generally, $ENV{DISPLAY} isn't going to give an exact port number. The typical X11 setup assumes (TCP 6000 + $port) where $port is what you find in the variable. There are more complicated port configurations like "localhost:1.1", though, so I didn't go into lengthy discussion. Use the X11 modules which presumably do it right.

    --
    [ e d @ h a l l e y . c c ]

      Theat's the part that's untested. Damn, I remembered the colon, but forgot that wat's after it is frequently some number that would be silly at best as a port number. (I think I confused it with the way X connections tunneld in ssh look in netstat output, which is on the order of localhost:6012). DRAT!

      Given a correct IP and port, the rest of the code should be good because it's extracted from code I actually use. But the ($addr, $port) = split(/:/, $ENV{DISPLAY}) is almost certain not to yiled a good port.

      --Bob Niederman, http://bob-n.com