Perl 教程 之 Perl Socket 编程 6
Perl Socket 编程
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
完整实例
接下来我们通过一个完整实例来了解下所有 socket 函数的应用:
服务端 server.pl 代码:
实例
!/usr/bin/perl -w
Filename : server.pl
use strict;
use Socket;
使用端口 7890 作为默认值
my port=shift||7890;myproto = getprotobyname('tcp');
my $server = "localhost"; # 设置本地地址
创建 socket, 端口可重复使用,创建多个连接
socket(SOCKET, PF_INET, SOCK_STREAM, proto)ordie"无法打开socket!\n";
setsockopt(SOCKET, SOL_SOCKET, SO_REUSEADDR, 1)
or die "无法设置 SO_REUSEADDR $!\n";
绑定端口并监听
bind( SOCKET, pack_sockaddr_in(port,inetaton(server)))
or die "无法绑定端口 $port! \n";
listen(SOCKET, 5) or die "listen: !";print"访问启动:port\n";
接收请求
my clientaddr;while(client_addr = accept(NEW_SOCKET, SOCKET)) {
send them a message, close connection
my name=gethostbyaddr(client_addr, AF_INET );
print NEW_SOCKET "我是来自服务端的信息";
print "Connection recieved from $name\n";
close NEW_SOCKET;
}
打开一个终端,执行以下代码:
$ perl sever.pl
访问启动:7890
客户端 client.pl 代码:
实例
!/usr/bin/perl -w
Filename : client.pl
use strict;
use Socket;
初始化地址与端口
my host=shift||′localhost′;myport = shift || 7890;
my $server = "localhost"; # 主机地址
创建 socket 并连接
socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2])
or die "无法创建 socket !\n";connect(SOCKET,packsockaddrin(port, inet_aton(server)))ordie"无法连接:portport! \n";
my line;while(line = ) {
print "line\n"; } close SOCKET or die "close:!";
打开另外一个终端,执行以下代码:
$ perl client.pl
我是来自服务端的信息