zhuyumu 发表于 2018-8-31 08:28:02

perl_IO::Socket模块简单实例

  socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
  下面这个是一个小例子:
  服务器端:
  #!/usr/bin/perl -w
  use strict;
  use IO::Socket;
  my $server_port = 9999;
  my $client;
  my $server = IO::Socket::INET->new(LocalPort => $server_port,
  Type      => SOCK_STREAM,
  Reuse   => 1,
  Listen    => 10) or die "Couldn't be a tcp server on port $server_port: $!\n";
  while ( $client = $server->accept()) {
  print "$client, it is ok\n";
  }
  close($server);
  客户端:
  #!/usr/bin/perl -w
  use strict;
  use IO::Socket;
  my $remote_host = '192.168.199.129';
  my $remote_port = 9999;
  my $socket = IO::Socket::INET->new(PeerAddr=> $remote_host,
  PeerPort=> $remote_port,
  Proto   => "tcp",
  Type      => SOCK_STREAM ) or die "Couldn't connect to $remote_host, $remote_port: $!\n";
  print "$socket,\t I'm is client\n";
  my $answer = ;
  close($socket);
  先执行服务器端,然后执行客户端,发现两台机器的9999都开了。
  具体深入以后在研究

页: [1]
查看完整版本: perl_IO::Socket模块简单实例