Re: [問題] Socket - Server 和 Client 傳訊問題
Socket Programming 有很多種方式可以去寫 Server 的部份,
但是要能夠多人連上去無非是以下兩個精神去做
1. fork child process or create threads
2. select based event trigger ( I/O Multiplexing )
如果要寫的更有趣的話可以配合 non blocking 甚至 asynchronous I/O 的作法
但是基於這個看板是 Perl 板,我就簡單的用IO::Socket模組配合開thread來示範
# ====================== 我是分隔線 ====================== #
# Server 端的程式碼
#!/usr/bin/perl
use threads;
use IO::Socket;
my $server = IO::Socket::INET->new(
LocalPort => 8088,
Type => SOCK_STREAM,
Listen => 32,
Reuse =>1
);
while(my $client = $server->accept()) {
threads->create("client_handler", $client);
}
sub client_handler {
my $client = shift;
my $msg = '';
while(<$client>) {
$msg .= $_;
last if($msg=~/\r\n\r\n$/s);
}
print $client "modify $msg";
$client->shutdown(1);
$client->close();
}
# ====================== 我是分隔線 ====================== #
# Client 端的程式碼
#!/usr/bin/perl
use IO::Socket;
my $client = IO::Socket::INET->new(
PeerAddr => "127.0.0.1",
PeerPort => 8088
);
print $client "HIHI THIS IS MY TEXT\r\n\r\n";
while(<$client>) {
print;
}
$client->close();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.71.40
→
08/06 19:23, , 1F
08/06 19:23, 1F
→
08/06 19:24, , 2F
08/06 19:24, 2F
※ 編輯: LiloHuang 來自: 140.114.71.40 (08/06 22:59)
推
08/07 01:28, , 3F
08/07 01:28, 3F
討論串 (同標題文章)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章