2. accept()方法:
语法:
远程连接套接字对象变量 = 服务端套接字对象变量->accept();
实例:
$remote_sock=$sock->accept();
讲解:
此方法的调用环境与传统C中SOCKET库调用原理一样,用于服务端的等待监听过程。
无参数,
返回值为远程连接的套接字对象变量。
调用此方法也是一个生成套接字的过程,只不过此套接字为远程连接的套接字而已,
它以对象变量方式存在,据有与本地套接字变量相同的属性与方法。
accept()方法在IO::Socket包里还提供另一种双返回值的调用方法:
语法:
(远程连接套接字对象变量,远程主机压缩地址变量)=服务端对象变量->accept();
实例:
($remote_sock,$remote_addr)=$sock->accept();
讲解:
与上一个返回值的调用方式基本相同,只是返回值中多了一个变量而已,
返回值中多了个变量------远程主机压缩地址变量。
3. bind()方法:
语法:
返回值变量=服务端套接字对象变量->bind(本地端口号,本地主机网络地址);
实例:
$result=$sock->bind(80,'127.0.0.1');
讲解:
bind方法用于在服务器端绑定主机的地址与端口。
它使用的两个参数都为未压缩值,
第一个为端口,
第二个为主机的网络适配器接口地址
(可以使用默认的保留字INADDR_ANY,
此保留字包括了主机的所有网络适配器接口地址,
调用它时,它会以穷举的方法穷举所有的网络适配器接口地址,直到找到为止);
返回值为布尔值,用于检测这次调用是否成功。
4. connect()方法:
语法:
返回值变量 = 套接字对象变量->connect(压缩地址变量);
实例:
$result = $sock->connect($pack_addr);
讲解:
常用于TCP连接(也可用于UDP,不过不常用),调用将向远程主机发送连接请求。
参数‘压缩地址变量’为sockaddr_in形式值,
返回值为布尔值。
若调用此方法则建立IO::Socket::INET对象时不能赋予参数'PeerAddr'或'PeerHost'、'PeerPort',
否则就会出现程序逻辑错误。
connect()方法也有双参数调用方式,使用起来更简单:
语法:
返回值变量=套接字对象变量->connect(远程端口号,远程主机地址);
实例:
$result = $sock->connect($remote_port,$remote_host);
讲解:
调用的目的与上面单参数的调用方式相当。
第一个参数为远程需要连接的主机的端口(等于new方法的参数'PeerPort'),
第二个参数为需要连接的主机地址(等于new方法的参数'PeerAddr'或'PeerHost'),
返回值为布尔值。