Perl 教程 之 Perl Socket 编程 6

简介: Perl Socket教程展示了如何进行网络通信。服务端(server.pl)创建一个TCP套接字,绑定到端口7890并监听,接收客户端连接并发送消息。客户端(client.pl)连接到服务端,接收并打印消息。在两个不同终端上分别运行服务端和客户端可实现交互。

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;
my $proto = getprotobyname('tcp');
my $server = "localhost"; # 设置本地地址

创建 socket, 端口可重复使用,创建多个连接

socket(SOCKET, PF_INET, SOCK_STREAM, $proto)
or die "无法打开 socket $!\n";
setsockopt(SOCKET, SOL_SOCKET, SO_REUSEADDR, 1)
or die "无法设置 SO_REUSEADDR $!\n";

绑定端口并监听

bind( SOCKET, pack_sockaddr_in($port, inet_aton($server)))
or die "无法绑定端口 $port! \n";

listen(SOCKET, 5) or die "listen: $!";
print "访问启动:$port\n";

接收请求

my $client_addr;
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';
my $port = shift || 7890;
my $server = "localhost"; # 主机地址

创建 socket 并连接

socket(SOCKET,PF_INET,SOCK_STREAM,(getprotobyname('tcp'))[2])
or die "无法创建 socket $!\n";
connect( SOCKET, pack_sockaddr_in($port, inet_aton($server)))
or die "无法连接:port $port! \n";

my $line;
while ($line = ) {
print "$line\n";
}
close SOCKET or die "close: $!";
打开另外一个终端,执行以下代码:

$ perl client.pl
我是来自服务端的信息

目录
相关文章
|
14天前
|
网络协议 Linux Python
Python网络编程基础(Socket编程)epoll在Linux下的使用
【4月更文挑战第12天】在上一节中,我们介绍了使用`select`模块来实现非阻塞IO的方法。然而,`select`模块在处理大量并发连接时可能会存在性能问题。在Linux系统中,`epoll`机制提供了更高效的IO多路复用方式,能够更好地处理大量并发连接。
|
14天前
Socket编程(头脑清晰,防止过载)
Socket编程(头脑清晰,防止过载)
|
14天前
|
网络协议 Java 网络安全
【计算机网络】—— Socket通信编程与传输协议分析
【计算机网络】—— Socket通信编程与传输协议分析
|
14天前
|
存储 算法 网络协议
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
20 0
|
14天前
|
网络协议 Linux Go
Go语言TCP Socket编程(下)
Go语言TCP Socket编程
|
14天前
|
网络协议 Ubuntu Unix
Go语言TCP Socket编程(上)
Go语言TCP Socket编程
|
14天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
14天前
|
网络协议 Unix Linux
Linux 下 socket 编程介绍
Linux 下 socket 编程介绍
|
14天前
|
网络协议 API 调度
Python网络编程基础(Socket编程)asyncio库的使用
【4月更文挑战第12天】在Python的网络编程中,除了直接使用底层的Socket API,还有许多高级的网络编程库可以帮助我们更简洁、高效地构建网络应用。这些库通常提供了异步IO、事件循环、协议支持等功能,使得开发者能够更专注于业务逻辑的实现。其中,`asyncio`库是Python 3中引入的一个强大的异步IO库,它为我们提供了编写异步代码的基础设施。
|
14天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。