用Perl语言进行Socket编程

Perl语言的网络编程 Perl是由Larry Wall于1987年创立的一种动态类型、解释型的编程语言。其设计目标是提供一种简单而灵活的脚本语言,主要用于文本处理和系统管理。Perl以其“有更多的方式做同一件事”(There's more than one way to do it)的哲学,吸引了大量程序员。Perl语言在网络编程领域的应用虽然不如某些现代语言广泛,但其强大的文本处理和丰富的模块生态使其在特定场景下依然具有吸引力。 阅读详情
网络编程是一门神秘且复杂的艺术,当然也十分有趣。Perl语言提供了丰富的TCP/IP网络函数,所有这些函数都
直接来源于C语言的socket库函数. 
由于Perl语言和C语言的socket库函数在型式和使用方法上都是一样的,因此会使用Perl语言进行Socket编程, 当
然也就会使用C语言进行Socket编程. 
下面是Perl语言中有关的socket库函数列表: 
函数原型 使用说明 
accept(NEWSOCKET,GENERICSOCKET) 接受请求的socket连接.如果成功,则返回压缩形式的网络地址;否则返回FALSE. 
范例: 
if (!$Connect = accept(NEW,HANDLE)) 
{ 
die "Connection failed: $! 
"; 
} 
bind(SOCKET,NAME) 建立NAME与SOCKET的绑定,其中NAME应该是对应socket正确类型的压缩地址. 
如果成功,则返回真;否则返回假. 
在使用socket进行网络编程时,这一函数十分重要,因为它建立了socket句柄与网络上某个地址的关联. 
范例: 
bind(SH,$SocketAddress); 
connect(SOCKET,NAME) 试图与已经调用了accept()函数并等待建立连接的另外一个进程进行对话. 
如果成功,则返回真;否则返回假.NAME应该是对应SOCKET句柄正确类型的压缩地址 
范例: 
connect(SOCK,$address) || die "Can’t connect with remote host: $! 
"; 
gethostbyaddr(ADDRESS,TYPE) 将压缩形式的网络地址转换为更易于人阅读理解的名字与地址. 
当只知道主机的IP地址时,可以使用本函数查询主机名及其他网络信息.它返回一个列表,包含如下信息: 
($name, $alias, $addrtype, $length, $address) 
其中, $name是与IP地址对应的主机名, $alias是对应$name的其他别名, $addrtype是网络地址的类型, $length是
地址的长度, 而$address则是压缩形式IP地址的列表. 
范例: 
$PackedAddress = pack("C4", $IPAddr); 
($name, $alias, $addrtype, $length, $address) 
=gethostbyaddr($PackedAddress,2); 
gethostbyname(NAME) 与上面的gethostbyaddr()函数类似,不过在这里主机名是作为参数.返回的信息格式完全相同. 
范例: 
$Host = "stuff.com"; 
($name, $alias, $addrtype, $length, $address) 
=gethostbyname($Host); 
@IP = unpack("C4",$address[0]); 
$HostIP = join(".", @IP); 

验证邮箱密码的程序的原码 
下面的代码在两种操作系统下对263.net和pop.netease.com两个POP3服务器严格测试, 证明是成功的. 
第一种: 
操作系统:Windows 98 中文版 
WWW服务器:Apache 1.3.9 for Win 
Perl 解释器:ActiveState Tool Corp的Perl for Win32 , version 5.005_03 built for MSWin32-x86-object 
第二种: 
操作系统:Red Hat Linux 6.1 
WWW服务器:Apache 1.3.6 for Linux 
Perl 解释器:version 5.005_03 built for i386-linux 

#!/usr/bin/perl 
# test.pl 
#Author homepage:  http://spot.126.com 
use strict; 
use Socket; 

my $pop3server = "263.net"; 
my $port = 110; 

$|=1; 
print "Content-type: text/html 

"; 
print "POP3 
"; 
print " 
"; 


my ($a,$name,$aliases,$proto,$type,$len,$thataddr,$thisaddr,$i); 
my $AF_INET = 2; 
my $SOCK_STREAM = 1; 
my $sockaddr = "S n a4 x8"; 

($name,$aliases,$proto) = getprotobyname("tcp"); 
($name,$aliases,$port) = getservbyname($port,"tcp") 
unless $port =~ /^d+$/;; 
($name,$aliases,$type,$len,$thataddr) = gethostbyname($pop3server); 

my $this = pack($sockaddr, $AF_INET, 12345, $thisaddr); 
my $that = pack($sockaddr, $AF_INET, $port, $thataddr); 

my $mysocket = socket(S, $AF_INET, $SOCK_STREAM, $proto); 
if ($mysocket) 
{ 
} 
else 
{ 
print "不能打开socket: $!"; 
exit(0); 
} 

my $mybind = bind(S, $this); 
if ($mybind) 
{ 
} 
else 
{ 
print "无法绑定!: $!"; 
exit(0); 
} 

my $myconnect = connect(S,$that); 
if ($myconnect) 
{ 
} 
else 
{ 
print "连接错误: $!"; 
exit(0); 
} 

my $BUF = ""; 
my $SenderIP = recv(S, $BUF, 596,0); 
if ($SenderIP) 
{ 
} 
else 
{ 
print "接收错误: $!"; 
exit(0); 
} 

if (substr($BUF,0,3) eq "+OK") 
{ 
} 
else 
{ 
print "POP3服务器出错! 

"; 
exit(0); 
} 

my $BUFFER = "USER zhangsan"; 
$BUFFER .= chr(13); 
$BUFFER .= chr(10); 

my $SENVAL = send(S, $BUFFER,0); 
if ($SENVAL) 
{ 
} 
else 
{ 
print "发送错误: $!"; 
exit(0); 
} 

my $BUF = ""; 
my $SenderIP = recv(S, $BUF, 4096,0); 
if ($SenderIP) 
{ 
} 
else 
{ 
print "接收错误: $!"; 
exit(0); 
} 

if (substr($BUF,0,3) eq "+OK") 
{ 
} 
else 
{ 
print "无此帐号! 

"; 
exit(0); 
} 

$BUFFER = "PASS 12345678"; 
$BUFFER .= chr(13); 
$BUFFER .= chr(10); 


my $SENVAL = send(S, $BUFFER,0); 
if ($SENVAL) 
{ 
} 
else 
{ 
print "发送错误: $!"; 
exit(0); 
} 

$BUF = ""; 
my $SenderIP = recv(S, $BUF, 196, 0); 


if ($SenderIP) 
{ 
} 
else 
{ 
print "接收错误: $!"; 
exit(0); 
} 

if (substr($BUF,0,3) eq "+OK") 
{ 
} 
else 
{ 
print "密码错误!"; 
exit(0); 
} 

print密码是正确的! 
本程序版权归菜瓜乐园 

EOF   
PERL的TCP 服务器与客户端 PERL编写的TCP服务器与客户端,很简单,一看就懂。 立即下载

相关推荐

VM与欧姆龙PLC通讯设置实战:Fins TCP/UDP协议详解

本文详细解析了VM(VisionMaster)与欧姆龙PLC通过Fins TCP/UDP协议进行通讯的实战设置。内容涵盖网络配置、协议选择(TCP可靠性与UDP实时性)、VM端地址映射与数据点添加、以及数据接收解析流程,并提供了常见错误排查与高级调试技巧,帮助视觉与自动化工程师快速实现稳定可靠的工业通讯集成。

weixin_29172963的博客 331

perl进行socket编程

      好久没更新博客了,也好久没写关于perl的文章了,blog的更新对我来说要看心情的,心血来潮我会 写很多的,呵呵,不说废话了。       socket编程,我想学过网络编程基本上都会,所以,虚的东西我也就不说了,直接看代码:   客户端:#!/usr/bin/perl -wuse Socket;use IO::Handle;socket(SOCK,AF_INET,SOCK

sx1989827的专栏 3038

使用JAVA 的 POI 库 将DOC文件转为DOCX文件

java使用POI库,将doc文件转为docx文件

qq_45808266的博客 5708

Perl 脚本测试网络连接

Perl 脚本测试网络连接。 #!/usr/bin/perl use IO::Socket; use POSIX qw(strftime); use vars qw($configfile @listen @filter @unknown @nlisten @pingable); sub testConnect($$) { my ($host, $port) = @_;

davidliu007的专栏 962

数学建模灵敏性分析(一阶、二阶灵敏度)python代码+懒人专用版

对于勉强看懂了灵敏度分析的同学来说,本文给出一个方便移植、修改的python程序,可以很方便地进行灵敏度分析。

春江花朝秋月夜 1万+

25个Prompt去除AI味,让AI写作更像真人

自然语言生成技术飞速发展,如今AI写作已经深度融入内容创作、营销运营和日常办公。但许多用户发现,AI生成的文本常常带着一股“AI味”——句子过于工整、过度总结、细节空洞,导致内容被一眼识破,甚至面临“AI率”过高的尴尬。其实,这种塑料感源于大模型的训练数据与对齐机制,它偏好生成结构完整、逻辑平滑的“安全文本”。要解决这一问题,核心不在于更换工具或复杂调参,而在于掌握提示词工程的底层逻辑:通过限制结构、注入细节、切换视角、打乱顺序等具体指令,引导模型生成更接近人类表达习惯的文本。本文基于实战经验,提供25个可

weixin_26824299的博客 260

PLEAC-Perl 教程 - Socket (Perl进阶者极力推荐)

17. Sockets<!--shoppingads_ad_client = "bff9f628482405022a03";shoppingads_ad_campaign = "default";shoppingads_ad_width = "728";shoppingads_ad_height = "90";shoppingads_ad_kw = "web hostin

OpenBSD 咨询与维护 1603

大模型LLM部署方式

建议根据实际需求选择方案,企业级服务优先考虑vLLM或TGI,个人用户可尝试Ollama或Hugging Face本地加载。若需完整代码示例,可参考网页2的VLLM实战或网页5的TGI部署案例。:高并发、低延迟的API服务,需分布式推理支持。:快速创建可分享的Web应用。:个人开发、快速原型验证。

u010249118的博客 516

Perl编写的socket客户端

use IO::Handle; #挂起IO::Handle use Socket; #调用SOCKET $port=9000; #连接远程主机的80端口 $host=localhost; #使用环回地址 $packhost=inet_aton($host); #压缩IP地址 $address=sockaddr_in($port,$packhost); #压成sockad

呱唧的收集器 522

2026闲鱼数据采集实战:本地YOLO识别滑块验证码+接口签名分析+零成本价格监控系统

2026闲鱼反爬系统升级实战:零成本解决方案 本文针对2026年闲鱼最新反爬机制提出了一套完整的零成本解决方案。系统面临四大挑战:AI滑块验证、接口签名升级、设备指纹绑定和精细化行为检测。通过以下技术突破实现稳定运行: 本地化AI破解:训练YOLOv11n模型实现98%准确率的滑块识别,替代付费打码平台 逆向工程:Hook闲鱼App签名算法,用Python重写HMAC-SHA256签名生成器 设备指纹管理:建立"一机一号一IP"机制,维护50+种设备特征 行为模拟:开发四阶段滑动轨迹模型

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1456

最新CobaltStrike4.8/CobaltStrike4.9、CS4.9/CS4.8、 Windows/Linux/Mac版下载

Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用,分为客户端与服务端,服务端是一个,客户端可以有多个,非常适合团队协同作战,多个攻击者可以同时连接到一个团队服务器上,共享攻击资源与目标信息和sessions,可模拟APT做模拟对抗,进行内网渗透。 Cobalt Strike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,

weixin_43167326的博客 7972

Perl语言的Socket编程

Socket是一种网络通信的端点,它为程序提供了在网络中进行数据传输的接口。Socket是网络中两台计算机进行通信的基本工具。通过Socket,程序能够建立、发送和接收数据,实现与其他网络服务的交互。

2501_91195884的博客 389

【100%通过率】2023华为od机试C卷【电脑病毒感染】Python 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 3033

用Perl语言进行Socket网络编程

网络编程是一门神秘且复杂的艺术,当然也十分有趣。Perl语言提供了丰富的TCP/IP网络函数,所有这些函数都直接于C语言的socket库函数网络编程是一门神秘且复杂的艺术,当然也十分有趣。Perl语言提供了丰富的TCP/IP网络函数,所有这些函数都直接于C语言的socket库函数。 由于Perl语言和C语言的socket库函数在型式和使用方法上都是一样的,因此会使用Perl语言进行Soc

Walter的学习笔记 2015

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 什么是SSH?
下一篇: 在Linux下安装PHP,APACHE,MYSQL,PERL的方法
wx红杉树
博客等级 码龄21年 383粉丝 296原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值