Article View: fj.lang.perl
Article #127select system call in Perl
From: SEKIDO Ryoichi
Date: Wed, 25 Nov 1998 00:00
Date: Wed, 25 Nov 1998 00:00
59 lines
2509 bytes
2509 bytes
関戸と申します.
Perl の select システムコールでよく分からないことがあるので,お尋ねします
.
クライアントからの接続を select で待ち受けて処理しようとしていますが,
新しい接続を accept で受けても,帰ってくるファイルハンドルが1回目と同じに
なってしまいます.そうではなくて,クライアント間のやりとりを仲立ちするよう
な
プログラムを作りたいのです.
ソースの一部を下記に添付します.
どなたか分かる方がいらっしゃいましたら教えてください.
よろしくお願いします.
--- midiCity Co.,Ltd. -------------------------------------------------->
関戸 良一 rsekido@midicity.co.jp
SEKIDO Ryoichi Phone/Fax 03-5478-0821/5478-0820
<-------------------------------------------------- midiCity Co.,Ltd.----
$thisport = pack($sockaddr, &AF_INET, $port, "\0\0\0\0");
socket(S, &PF_INET, &SOCK_STREAM, $proto) ||
die "Cannot create socket";
bind(S, $thisport) ||
die "Cannot bind socket";
listen(S, 5) ||
die "Cannot listen socket";
$rmask1 = '';
$rmask2 = '';
vec($rmask1, fileno(S), 1) = 1;
$rmask2 = $rmask1;
undef $list_fd1;
undef $list_fd2;
while (select($rmask2, undef, undef, undef) > 0) {
for ($fd=0; $fd<$fd_setsize; $fd++) {
if (vec($rmask2, $fd, 1) != 1) {
next;
}
if ($fd == fileno(S)) {
# このaccept で NS が常に同じになってしまう.
accept(NS, S) ||
die "Cannot accept";
vec($rmask1, fileno(NS), 1) = 1;
if (! $list_fd1) {
$list_fd1 = NS;
}else{
$list_fd2 = NS;
}
}
# 以下略
}
$rmask2 = $rmask1;
}
Technical Details
Message-ID:
<rsekido-2511981308400001@news.navi-con.or.jp>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS X-Google-Thread: 1043e7,fa75a01daeb606d9,start X-Google-Attributes: gid1043e7,public X-Google-Thread: fdef0,fa75a01daeb606d9,start X-Google-Attributes: gidfdef0,public From: rsekido@midicity.co.jp (SEKIDO Ryoichi) Subject: select system call in Perl Date: 1998/11/25 Message-ID: <rsekido-2511981308400001@news.navi-con.or.jp> X-Deja-AN: 415405654 Content-Type: text/plain; charset=iso-2022-jp X-Complaints-To: usenet@mars.navi-con.or.jp X-Trace: mars.navi-con.or.jp 911967534 15244 210.153.93.248 (25 Nov 1998 04:18:54 GMT) Organization: midiCity Co.,Ltd. Mime-Version: 1.0 NNTP-Posting-Date: 25 Nov 1998 04:18:54 GMT Newsgroups: fj.lang.perl,fj.unix