cari
Rumahphp教程PHP开发用Perl语言进行Socket编程

网络编程是一门神秘且复杂的艺术,当然也十分有趣。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"Connectionfailed:$!
";
}
bind(SOCKET,NAME)建立NAME与SOCKET的绑定,其中NAME应该是对应socket正确类型的压缩地址.
如果成功,则返回真;否则返回假.
在使用socket进行网络编程时,这一函数十分重要,因为它建立了socket句柄与网络上某个地址的关联.
范例:
bind(SH,$SocketAddress);
connect(SOCKET,NAME)试图与已经调用了accept()函数并等待建立连接的另外一个进程进行对话.
如果成功,则返回真;否则返回假.NAME应该是对应SOCKET句柄正确类型的压缩地址
范例:
connect(SOCK,$address)||die"Can’tconnectwithremotehost:$!
";
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服务器严格测试,证明是成功的.
第一种:
操作系统:Windows98中文版
WWW服务器:Apache1.3.9forWin
Perl解释器:ActiveStateToolCorp的PerlforWin32,version5.005_03builtforMSWin32-x86-object
第二种:
操作系统:RedHatlinux6.1
WWW服务器:Apache1.3.6forLinux
Perl解释器:version5.005_03builtfori386-linux

#!/usr/bin/perl
#test.pl
#Authorhomepage:http://spot.126.com
usestrict;
useSocket;

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="Sna4x8";

($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="USERzhangsan";
$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="PASS12345678";
$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密码是正确的!

 以上就是用Perl语言进行Socket编程的内容,更多相关文章请关注PHP中文网(www.php.cn)! 


Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),