Re: Jak ubijac sockety

Autor: Piotr Piatkowski (kompas_at_galaxy.uci.agh.edu.pl)
Data: Wed 13 Nov 1996 - 21:11:52 MET


Jaroslaw Rafa <RAJ_at_inf.wsp.krakow.pl> wrote:
: Problem jest wlasnie w tym, ze nie widac zadnego procesu, ktory to polaczenie
: trzyma. Jest tylko polaczenie wyswietlone przez netstata (najczesciej w stanie
: "UNKNOWN"). I tak potrafi wisiec pare dni... Nie wiem czy w koncu samo znika
: czy nie, bo mniej wiecej w tydzien po ostatnim takim przypadku zawiesil sie
: serwer, wiec musielismy go wyresetowac i zniklo sila rzeczy :-).

Hmm... Napisałem kiedyś taki programik, ale teraz jak na niego
patrzę, to nie wiem czy to ma w ogóle jakiś sens... Ale spróbuj, może
akurat Ci pomoże:

------
#!/usr/bin/perl

require 'sys/socket.ph';

if($#ARGV < 0 )
 {
   print "Usage: $0 <socket_number>\n";
   exit 1;
 }

$port = $ARGV[0];
$|=1;

print "Unlocking port $port ... ";

$sockaddr = 'S n a4 x8';
$packedport = pack($sockaddr, &AF_INET , $port, "\0\0\0\0");
($name,$aliases,$proto) = getprotobyname('tcp');

socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!\n";
setsockopt(S, &SOL_SOCKET, &SO_REUSEADDR, 1) || die "setsockopt: $!\n";
bind(S,$packedport) || die "bind: $!\n";

print "done!\n";

------

-- 
Piotr Piątkowski, Uczelniane Centrum Informatyki, AGH Krakow, POLAND


To archiwum zostało wygenerowane przez hypermail 2.1.7 : Wed 19 May 2004 - 16:00:53 MET DST