網路程式設計是一門神祕且複雜的藝術,當然也十分有趣。 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_03buforMSWin32,version5.005_03第二種:
作業系統:RedHatlinux6.1
WWW伺服器:Apache1.3.6forLinux
Perl解釋器:version5.005_03builtfori386-linux
#!/usr/bin/perll#Atest.a. //spot.126.com
usestrict;
useSocket;
my$pop3server="263.net";
my$port=110;
$|=1;
寶"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,$alia $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$thataddr);
my$mysocket=socket(S$thataddr); $AF_INET,$SOCK_STREAM,$proto);
if($mysocket)
{
}
else
{
print"不能開啟socket:$!";
exit(0);mmy}
}
(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
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);
);
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);
}
🎜";🎜exit(0);🎜}🎜🎜 ";🎜$BUFFER.=chr(13);
$BUFFER.=chr(10);
my$SENVAL=send(S,$BUFFER,0);
if($SENVAL)
{
}
print"傳送錯誤:$!";
exit(0);
}
$BUF="";
my$SenderIP=recv(S,$BUF,196,0);
if($SenderIP)
{
}
else
{
print"接收錯誤:$!";
else
{
print"接收錯誤:$!";
exit(0);
}
if(substr($BUF,0,3)eq" OK")
{
}
{
print"密碼錯誤!";
exit(0);
}
print密碼是正確的!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6
視覺化網頁開發工具