歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> PERL編程

Linux Socket實現機器間的通信(Perl)

一、IO::Socket簡介
IO::Socket, 它是socket通信的面向對象的Perl接口。
IO::Socket下又有兩個子類IO::Socket::INET與IO::Socket::UNIX.

現在用的是IO::Socket::INET。它的步驟是:
先調用new方法,
然後就可以進行基本I/O操作(使用print與getline等基本I/O方法)了,
最後調用close方法結束會話,那麼整個SOCKET會話就算完成了。

方法:
1. new()方法:
語法:
SOCKET對象變量 = IO::Socket::INET->new(SOCKET變量值);
實例:
$sock=IO::Socket::INET->new('192.168.1.2:23');
講解:
所有的PERL對象編程都把對象‘形象化’為某個變量,
這裡的SOCKET句柄對象也不例外,調用此方法的返回值便為SOCKET對象變量了。
這裡使用參數為簡單參數模式,
在雙引號或但引號內的socket地址結構為:
'主機IP或域名:端口號或服務名稱',
或 '主機IP或域名:服務名稱(端口號)'。

除了最簡單的單參數調用外,new方法還有很多參數可以選擇性調用的,
下面就對這些參數的簡單概括:
***********************************************************************
參數 描述 值類型
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
PeerAddr 遠程主機的地址 主機地址[:端口或服務]
PeerHost 與PeerAddr相同
PeerPort 遠程端口或服務 端口或服務
LocalAddr 本地地址 主機地址[:端口或服務]
LocalHost 與LocalAddr相同
LocalPort 本地端口 端口或服務
Proto 所使用的協議 協議名或協議號
Type 套接字類型 SOCK_STREAM/SOCK_DGRAM...
Listen 監聽的隊列長度 整形數
Reuse 用於避免重啟時BIND時間間隙 布爾值
Timeout 超時值 整形數
MultiHomed 用於連接多IP地址 布爾值
***********************************************************************

PeerAddr(遠程主機地址)與
PeerHost(遠程主機名)基本相同,
調用方式也相同,其值格式除了標准的格式外,還可以加':'號後再加端口或服務,
這樣的的話,後面的參數PeerPort(遠程主機端口或服務)的值就無效了。

PeerPort(遠程主機端口或服務),
其值的格式可以是端口,還可以是服務名,
更可以是‘組合’,
如:"telnet(23)";
當PeerAddr(遠程主機地址)或PeerHost(遠程主機名)的值格式中指明了端口,
再調用此參數時,此參數的值無效。

LocalAddr(本地主機地址)、
LocalHost(本地主機名)、
LocalPort(本地主機端口或服務)之間的關系與調用方式
與上面介紹的三個參數
PeerAddr(遠程主機地址)、
PeerHost(遠程主機名)、
PeerPort(遠程主機端口或服務)相當。

還有一種情況,就是如果
只定義了LocalPort(本地主機端口或服務),
而沒有定義LocalAddr(本地主機地址)或LocalHost(本地主機名),
那IO::Socket會將本地機器的地址的值默認為INADDR_ANY通配符,
也就是不定義本地主機的地址值的話就定義為允許所有接口。
Copyright © Linux教程網 All Rights Reserved