亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 6333 | 回復(fù): 16
打印 上一主題 下一主題

求教IO::Socket::INET 本地端口釋放問題,求高手解惑! [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-03-17 10:57 |只看該作者 |倒序瀏覽
求教IO::Socket::INET 本地端口釋放問題,求高手解惑!


###################################################
use IO::Socket;
use Getopt::Std;

my %option;
getopts("u:c:p:", \%option);

my $url=$option{u};
my $cookie=$option{c} if exists($option{c});
my $localport=$option{p};

(my $remote_host, my $uri)= $url=~/http:\/\/(.*?)\/(.*)/;

$remote_port="80";

$socket = IO::Socket::INET->new(PeerAddr => $remote_host,
                                PeerPort => $remote_port,
                                LocalPort => $localport,
                                Proto    => "tcp",
                                Type     => SOCK_STREAM)
    or die "Couldn't connect to $remote_hostremote_port : $@\n";


if (exists($option{c}))
{
        print $socket "GET /hostname.txt HTTP/1.1\r\nHost: 10.3.10.1\r\nCookie: $cookie\r\nConnection: close\r\n\r\n" ;
} else {
        print $socket "GET /hostname.txt HTTP/1.1\r\nHost: 10.3.10.1\r\nConnection: close\r\n\r\n";
}

$socket->shutdown(1);

my $answer=undef;

while (<$socket>
{
        $answer.=$_;
}

print "$answer\n";

close($socket);
#################  運行   ###############
stress204# perl sourceport.pl -u http://172.16.63.31/hostname.txt -p 9999
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Wed, 17 Mar 2010 10:52:32 GMT
Content-Type: text/plain
Last-Modified: Tue, 11 Aug 2009 14:53:39 GMT
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Via: 1.1 AN-0001242745426001

172.16.64.207

stress204# perl sourceport.pl -u http://172.16.63.31/hostname.txt -p 9999
Couldn't connect to 172.16.63.31:80 : IO::Socket::INET: Address already in use     <-----上次執(zhí)行時端口沒釋放


###########################
抓包看了,連接確實斷了,但是那個端口不能重復(fù)使用了,必須等超時之后才可用

論壇徽章:
0
2 [報告]
發(fā)表于 2010-03-17 11:32 |只看該作者
好像ReusePort,Reuse 能管用,但是試了還是沒效果啊,沒人知道嗎?


$socket = IO::Socket::INET->new(PeerAddr => $remote_host,
                                PeerPort => $remote_port,
                                LocalPort => $localport,
                                Proto    => "tcp",
                                ReuseAddr=> "1",
                                Reuse    => "1",
                                ReusePort=> "1",
                                Type     => SOCK_STREAM)

論壇徽章:
0
3 [報告]
發(fā)表于 2010-03-17 11:52 |只看該作者
IO::Socket::INET,這個包是有問題的

論壇徽章:
0
4 [報告]
發(fā)表于 2010-03-17 13:14 |只看該作者
本帖最后由 黑色陽光_cu 于 2010-03-17 13:21 編輯

用了ReusePort Reuse后 試試把那句shutdown去掉 用了shutdown會發(fā)送FIN

--------------------------------------------------

還不行試試use Socket;

論壇徽章:
0
5 [報告]
發(fā)表于 2010-03-17 13:38 |只看該作者
搞定了,use Socket; 希望以后的人少走彎路。
這需求太惡心人了。!
#######################################
use Socket;
use IO::Handle;
use Getopt::Std;

my %option;
getopts("u:c:p:", \%option);

my $url=$option{u};
my $cookie=$option{c} if exists($option{c});
my $localport=$option{p};

(my $remote_host, my $uri)= $url=~/http:\/\/(.*?)\/(.*)/;

socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp'));

$internet_addr = inet_aton($remote_host)
    or die "Couldn't convert $remote_host into an Internet address: $!\n";
$paddr = sockaddr_in("80", $internet_addr);

my $inet_addr = inet_aton("172.16.63.204";
my $localaddr     = sockaddr_in($localport, $inet_addr);
bind(SOCKET, $localaddr)         or die "bind: $!";


connect(SOCKET, $paddr)
    or die "Couldn't connect to $remote_hostremote_port : $!\n";

SOCKET->autoflush(1);

if (exists($option{c}))
{
        print SOCKET "GET /$uri HTTP/1.1\r\nHost: 10.3.10.1\r\nCookie: $cookie\r\nConnection: close\r\n\r\n" ;
} else {
        print SOCKET "GET /$uri HTTP/1.1\r\nHost: 10.3.10.1\r\nConnection: close\r\n\r\n";
}


my $answer=undef;

while (<SOCKET>
{
        $answer.=$_;
}

print "$answer\n";

close(SOCKET);
############  運行  ###################
stress204# perl sourceport2.pl -u http://172.16.63.31/hostname.txt -p 2000
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Wed, 17 Mar 2010 13:39:23 GMT
Content-Type: text/plain
Last-Modified: Tue, 11 Aug 2009 14:53:39 GMT
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Via: 1.1 AN-0001242745426001

172.16.64.207

stress204# perl sourceport2.pl -u http://172.16.63.31/hostname.txt -p 2000
HTTP/1.1 200 OK
Server: nginx/0.5.33
Date: Wed, 17 Mar 2010 13:39:24 GMT
Content-Type: text/plain
Last-Modified: Tue, 11 Aug 2009 14:53:39 GMT
Accept-Ranges: bytes
Content-Length: 14
Connection: close
Via: 1.1 AN-0001242745426001

172.16.64.207

論壇徽章:
0
6 [報告]
發(fā)表于 2010-03-17 13:43 |只看該作者
你原來的

$socket->shutdown(1);

這個會發(fā)FIN包吧?

論壇徽章:
0
7 [報告]
發(fā)表于 2010-03-17 13:45 |只看該作者
$socket->shutdown(1);

會發(fā)FIN包

論壇徽章:
0
8 [報告]
發(fā)表于 2010-03-17 13:49 |只看該作者
他老母的,去掉 $socket->shutdown(1); 之后原來那腳本也好使了,為啥呢?

論壇徽章:
0
9 [報告]
發(fā)表于 2010-03-17 13:58 |只看該作者
他老母的,去掉 $socket->shutdown(1); 之后原來那腳本也好使了,為啥呢?
meihuaqi 發(fā)表于 2010-03-17 13:49



   


不告訴你

論壇徽章:
0
10 [報告]
發(fā)表于 2010-03-17 14:13 |只看該作者
高手,太小氣了
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP