看板 Perl 關於我們 聯絡資訊
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
LiloHuang:附註, 我用\r\n\r\n表示資料傳輸完畢 08/06 19:23
LiloHuang:這份程式跟上面的作業幾乎相同的目的 稍作修改即可達成 08/06 19:24
※ 編輯: LiloHuang 來自: 140.114.71.40 (08/06 22:59)
decken:感謝LiloHuang的教學,正在努力研究中!! 08/07 01:28