[Tokyo.pm] じゃんけんサーバもどき
Keiichi Okabe
okabek @ beige.ocn.ne.jp
2003年 7月 21日 (月) 11:40:33 CDT
岡部です.
テスト用に作ったじゃんけんサーバもどきのスクリプトも流します.
こちらは「もどき」なので,後でちゃんと動くものも作る予定.
動作環境はさっきと同じで,ActivePerl Build804
v5.8.0 MSWin32-x86-multi-thread 版です
-----------------------------------------------------------
#!perl -w
# jyanken_sv.pl
# for ll-saturday at 030809
# by keiichi @ tokyo.pm.org
use IO::Socket;
use Net::hostent;
use strict;
my ($remote,$remote_port,$local_port);
my ($notify,$poll,$status,$message,$sender);
my (@hand,$hostinfo,$str);
my ($ip,$port);
$local_port = 2003;
$notify = IO::Socket::INET->new(
Proto => 'tcp',
LocalPort => $local_port,
Listen => SOMAXCONN,
Reuse => 1
) or die "can't setup server";
$sender = $notify->accept;
$hostinfo = gethostbyaddr($sender->peeraddr);
printf "Connect from %15s\n",$hostinfo->name;
undef $str;
while(<$sender>){
$str .= $_;
}
($ip,$port) = $str =~ m/([^:]+):(\d+)/;
printf "Connect to %s port %d\n",$ip,$port;
print "First time\n";
for (1..10){
$poll = IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => $ip,
PeerPort => $port
) or die "can't connect to port $port on $ip:$!";
print $poll "CALL\r\n";
while(<$poll>){
print $_;
}
$poll->close;
}
print "To go second time\n";
$status = IO::Socket::INET->new(
Proto => 'udp',
PeerAddr => $ip,
PeerPort => 2003
) or die "can't connect to udp port on $ip:$!";
$status->send("100\r\n");
$status->close;
print "Second TIme\n";
for (1..10){
$poll = IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => $ip,
PeerPort => $port
) or die "can't connect to port $port on $ip:$!";
print $poll "CALL\r\n";
while(<$poll>){
print $_;
}
$poll->close;
}
$status = IO::Socket::INET->new(
Proto => 'udp',
PeerAddr => $ip,
PeerPort => 2003
) or die "can't connect to udp port on $ip:$!";
print "To go third time\n";
$status->send("100\r\n");
$status->close;
print "Third time\n";
for (1..10){
$poll = IO::Socket::INET->new(
Proto => 'tcp',
PeerAddr => $ip,
PeerPort => $port
) or die "can't connect to port $port on $ip:$!";
print $poll "CALL\r\n";
while(<$poll>){
print $_;
}
$poll->close;
}
-----------------------------------------------------------
--
okabek @ beige.ocn.ne.jp 岡部 恵一
成功出於衆者、先知也、先知者、必取於人、知敵之情者也
孫子 用間篇 第十三
Tokyo-pm メーリングリストの案内