Perl 套接字编程
 
 
Perl 套接字编程
 
 
什么是套接字编程?
 
 套接字是帮助通过网络在不同进程之间建立虚拟连接的过程。 
 
 计算机通过其上运行的各种应用程序接收和发送信息。该信息通过分配给它的唯一 IP 地址路由到系统。通信期间发送的数据采用"协议"格式。这些协议是所有通信伙伴都接受的规则。套接字通信中有许多协议格式具有不同的目标。最常用的协议是TCP/IP 协议。
 
 对于服务器-客户端程序,我们需要创建两个Perl 脚本。一个用于服务器,另一个用于客户端。这两个控制台将通过彼此进行通信。您可以在客户端输入数据,这些数据将显示在服务器端控制台上。
 
 
Perl 创建服务器
 
 按照以下步骤创建套接字服务器。
 
使用 socket 调用创建套接字。 
使用对端口地址的bind 调用绑定套接字。 
在端口地址上使用 listen 调用侦听套接字。 
使用accept 调用接受客户端连接。 
Perl 创建客户端
 
 按照以下步骤创建客户端套接字。
 
使用 socket 调用创建套接字。 
使用 connect 调用连接到服务器的套接字。 
Perl Socket 编程示例
 
 在这个程序中,我们在服务器端控制台上显示了客户端数据Hello World!。
 
 服务器端脚本server.pl
 
 
  
  
#!/usr/bin/perl-w
use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '1234', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print"Waiting for the client to send data\n"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print$_; 
} 
close($socket); 
   
  
 客户端脚本client.pl
 
 
  
  
use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '1234', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket;
print$socket "Hello World!!\n";
close($socket);
 
   
  
 输出: 
 
 
 
Perl Socket 读写程序
 
 在这个客户端-服务器程序中,我们将在客户端控制台上接收用户的输入。此输入将通过客户端-服务器通信显示在服务器的控制台上。
 
 此处的服务器端脚本将与之前的脚本保持一致。
 
 服务器端脚本 server.请
 
 
  
  
#!/usr/bin/perl-w
use IO::Socket; 
use strict; 
use warnings; 
my $socket = new IO::Socket::INET ( 
LocalHost => 'localhost', 
LocalPort => '1234', 
Proto => 'tcp', 
Listen => 1, 
Reuse => 1, 
); 
die "Could not create socket: $!n" unless $socket; 
print"Waiting for the client to send data\n"; 
my $new_socket = $socket->accept(); 
while(<$new_socket>) { 
print$_; 
} 
close($socket); 
   
  
 客户端脚本client.pl
 
 
  
  
use strict; 
use warnings; 
use IO::Socket; 
my $socket = new IO::Socket::INET ( 
PeerAddr => 'localhost', 
PeerPort => '1234', 
Proto => 'tcp', 
); 
die "Could not create socket: $!n" unless $socket;
print"Enter the data:\n";
my $data = <STDIN>;
chomp $data;
print$socket "this is the data entered by user '$data'\n";
close($socket);
 
   
  
 输出: 
 
