Perl ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¹Ì´Ï»çÀÌÆ®>JPerl>Socket



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Âü°í : http://www.devshed.com/c/a/Perl/Socket-Programming-in-PERL/

Perl ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö

³×Æ®¿öÅ© ÇÁ·Î±×·¥Àº ÁÖ·Î C¸¦ ÀÌ¿ëÇØ¼­ ÀÛ¼ºÀ» ÇØ¿Ô´Ù. ¿ö³«¿¡ Àͼ÷ÇØÁ® Àֱ⵵ ÇÏÁö¸¸ PerlÀ» ÀÌ¿ëÇÑ ¸ÖƼ¾²·¹µå, ¸ÖƼÇÁ·Î¼¼½Ì ÇÁ·Î±×·¡¹Ö °æÇèÀÌ ¾ø¾ú±â ¶§¹®À̱⵵ ÇÏ´Ù. - ¿Ø¸¸ Çϸé C¸¦ ÀÌ¿ëÇ߱⠶§¹®¿¡ °æÇèÀÌ ¾ø¾úÀ» ¼öµµ ÀÖÁö¸¸.. -

À̹ø¿¡´Â PerlÀ» ÀÌ¿ëÇØ¼­ ¼ÒÄÏ ÇÁ·Î±×·¡¹ÖÀ» Çϱâ·Î Çß´Ù. Master <-> Slave ¹æ½ÄÀÇ ºÐ»ê ½Ã½ºÅÛÀ» ¸¸µé°í, À̶§ Slave ¿¡¼­ ½ÇÇàµÉ Job FunctionÀº Master¿¡ ÀÇÇØ¼­ ¹èÆ÷µÇµµ·Ï ¼³°è¸¦ Çߴµ¥ ¾Æ¹«·¡µµ ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÏ´Â°Ç È¿À²ÀûÀÌÁö ¸øÇϱ⠶§¹®ÀÌ´Ù. ´Ù¾çÇÑ È¯°æÀÇ ½Ã½ºÅÛÀ̶ó¸é, ÄÄÆÄÀÏµÈ ÇÁ·Î±×·¥À» ¹èÆ÷ÇÏ´Â°Ç °³¹ß/°ü¸®Â÷¿ø¿¡¼­ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù.

±×·¡¼­ perlÀ» ÀÌ¿ëÇØ¼­ job functionÀ» °³¹ßÇϱâ·Î Çß´Ù.

Server ÇÁ·Î±×·¡¹Ö

001  #! /usr/bin/perl -w
002  # server0.pl
003  #--------------------
004  
005  use strict;
006  use Socket;
007  
008  # use port 7890 as default
009  my $port = shift || 7890;
010  my $proto = getprotobyname('tcp');
011  
012  # reusable socketÀ» »ý¼ºÇÑ´Ù.
013  socket(SERVER, PF_INET, SOCK_STREAM, $proto) or die "socket: $!";
014  setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, 1) or die "setsock: $!";
015  
016  # grab a port on this machine
017  my $paddr = sockaddr_in($port, INADDR_ANY);
018  
019  # port¸¦ bind() ÇÑ´Ù. 
020  bind(SERVER, $paddr) or die "bind: $!";
021  listen(SERVER, SOMAXCONN) or die "listen: $!";
022  print "SERVER started on port $port ";
023  
024  # ¿¬°áÀ» ¹Þ¾ÆµéÀδÙ. 
025  my $client_addr;
026  while ($client_addr = accept(CLIENT, SERVER))
027  {
028      # ¿¬°áµÈ È£½ºÆ®ÀÇ Á¤º¸¸¦ ¾ò¾î³½´Ù. 
029      my ($client_port, $client_ip) = sockaddr_in($client_addr);
030      my $client_ipnum = inet_ntoa($client_ip);
031      my $client_host = gethostbyaddr($client_ip, AF_INET);
032  
033      # ¿¬°áµÈ È£½ºÆ®ÀÇ Á¤º¸¸¦ Ãâ·ÂÇÑ´Ù. 
034      print "got a connection from: $client_host","[$client_ipnum] ";
035  
036      # ¿¬°áµÈ È£½ºÆ®¿¡ ¸Þ½ÃÁö¸¦ Àü¼ÛÇÑ´Ù. 
037      print CLIENT "Smile from the server";
038      close CLIENT;
039  } 
040  

Client ÇÁ·Î±×·¡¹Ö

001  #! /usr/bin/perl -w
002  # client1.pl - a simple client
003  #----------------
004  
005  use strict;
006  use Socket;
007  
008  # ¿¬°áÇÒ È£½ºÆ® Á¤º¸¸¦ ¼³Á¤ÇÑ´Ù. 
009  my $host = shift || 'localhost';
010  my $port = shift || 7890;
011  my $proto = getprotobyname('tcp');
012  
013  my $iaddr = inet_aton($host);
014  my $paddr = sockaddr_in($port, $iaddr);
015  
016  # ¼ÒÄÏÀ» »ý¼ºÇÏ°í ¿¬°áÇÑ´Ù.
017  socket(SOCKET, PF_INET, SOCK_STREAM, $proto)
018      or die "socket: $!";
019  connect(SOCKET, $paddr) or die "connect: $!";
020  
021  my $line;
022  while ($line = <SOCKET>)
023  {
024      print $line;
025  }
026  close SOCKET or die "close: $!"; 
027  
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.