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);
输出:
