8. recv()方法:
语法:
压缩远程地址地址 = 套接字对象变量->recv(接收数据变量,接收数据值长度,标志值);
实例:
$remote_pack_address=$sock->recv($mem,100,0);
讲解:
recv方法是专门为SOCKET接收数据的特殊方法,
调用格式与参数格式也与C库的SOCKET API基本一样。
第一个参数是存放接收后的数据的变量值;
第二个参数是接收的数据的长度值;
第三个参数是标志值,默认为0就可以了(省略此值不填,系统默认也为0)。
二、IO::Select :
IO::Select包是一个select系统调用的面向对象的Perl接口。
它实现了类似于系统函数select的调用,允许用户了解到有哪些句柄 就绪可读 / 可写 / 未知的例外
方法:
1. new([HANDLE])
创建新的对象,并且可随意用一组句柄来初始化
2. add(HANDLES)
向对象中增加一个句柄的列表,它是一个事务发生时将要返回的值,
IO::Select将这些值保存在高速缓冲区内,并以句柄的fileno建立索引,
因此如果多于一个的句柄被指定相同的fileno,那么只将最后一个存入缓冲区。
每一个句柄能够成为一个IO::Select对象,一个整数或第一元素为IO::Handle或整数的数组的指针。
3. remove(HANDLES)
从对象中移除所给的句柄,同样针对句柄的fileno工作,所增加的具有相同fileno的句柄将不被通过。
4. exits(HANDLES)
如果句柄现在是存在的,返回一个真值(实际上是句柄本身),其他情况返回未定义。
5. handles
返回一个数组,元素包括所有已注册的数组。
6. can_read([TIMEOUT])
返回一个数组,元素包括已就绪的可读的句柄。
TIMEOUT是在返回一个空数组前的等待的最大时间数,
若未指定TIMEOUT并且所有句柄已注册,则调用将阻塞。
7. can_write([TIMEOUT])
除了是返回可写的句柄外其它与can_read相同。
8. has_exception([TIMEOUT])
检测句柄的异常状态。
9. count()
返回句柄的数目,
当调用一个can_方法或对象通过select静态方法时被检测的句柄的数目。
10. bit()
Return the bit string suitable as argument to the core select() call
11. select(READ,WRITE,EXCEPTION[,TIMEOUT])
select是一个静态方法,调用它要像调用new()那样带上包名。
READ, WRITE 和EXCEPTION 可以是undef或IO::Select对象。
TIMEOUT是可选的,具有与核心selcet调用相同的作用。
返回的结果
是一个三元素的数组,
每个元素是分别指向存储着已就绪可读,可写和未知状态的句柄所组成的数组的指针。
如果遇到错误返回一个空列表。