Perl教程
Perl控制语句
Perl高级

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 编程 1

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);
输出:
Perl Socket 编程 2
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4