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
我是来自服务端的信息

目录
相关文章
|
17天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
17天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
22天前
|
网络协议 程序员 Python
pythonTCP客户端编程创建Socket对象
【4月更文挑战第6天】本教程介绍了TCP客户端如何创建Socket对象。Socket作为网络通信的基础单元,包含协议、IP地址和端口等信息。在TCP/IP中,Socket分为流式(TCP)、数据报(UDP)和原始套接字。以Python为例,创建TCP Socket对象需调用`socket.socket(AF_INET, SOCK_STREAM)`。为确保健壮性,应使用异常处理处理可能的`socket.error`。学习本教程将帮助你掌握TCP客户端创建Socket对象的技能。
|
1月前
|
网络协议 安全 API
计算机网络之Socket编程
计算机网络之Socket编程
|
2月前
|
网络协议 安全 开发者
Python 中的 Socket 编程
Python 中的 Socket 编程
44 4
|
4天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
16天前
|
网络协议 Java API
Python网络编程基础(Socket编程)Twisted框架简介
【4月更文挑战第12天】在网络编程的实践中,除了使用基本的Socket API之外,还有许多高级的网络编程库可以帮助我们更高效地构建复杂和健壮的网络应用。这些库通常提供了异步IO、事件驱动、协议实现等高级功能,使得开发者能够专注于业务逻辑的实现,而不用过多关注底层的网络细节。
|
20天前
|
Python
Python网络编程基础(Socket编程)UDP服务器编程
【4月更文挑战第8天】Python UDP服务器编程使用socket库创建UDP套接字,绑定到特定地址(如localhost:8000),通过`recvfrom`接收客户端数据报,显示数据长度、地址和内容。无连接的UDP协议使得服务器无法主动发送数据,通常需应用层实现请求-响应机制。当完成时,用`close`关闭套接字。
|
1月前
|
网络协议 Perl
Perl 教程 之 Perl Socket 编程 1
Perl Socket教程介绍了如何进行服务端和客户端编程。服务端使用socket、bind、listen和accept函数建立并监听连接;客户端则通过socket和connect函数连接到服务端。socket函数创建套接字,参数包括协议集(如AF_INET)、套接字类型(如SOCK_STREAM)和传输协议(如TCP)。示例代码展示了如何在Perl中调用socket函数。
17 3
|
1月前
|
安全 网络协议 网络安全
Python中的Socket编程
Python中的Socket编程
31 0