Socket 套接字

属性
命名空间 fize\net
类名 Socket
方法:
方法名 说明
__construct() 构造函数
__destruct() 析构函数
accept() 返回当前套接字上的当前连接Socket对象
bind() 给套接字绑定名字
clearError() 清除套接字或者最后的错误代码上的错误
close() 关闭当前套接字资源
cmsgSpace() 计算应分配用于接收辅助数据的缓冲区的大小。
connect() 客户端开启一个套接字连接
createListen() 创建一个新的监听全部接口的套接字
createPair() 创建一对无区别的套接字Socket对象,并将它们存储在数组$obj中
create() 创建一个套接字
getOption() 获取当前套接字的套接字选项

|getOption() |获取当前套接字的套接字选项 | +——————+——————————————————————————————+ |getOpt() |获取当前套接字的套接字选项 使用socket_get_option()的别名socket_getopt() | +——————+——————————————————————————————+ |getPeerName() |获取主机/端口或UNIX文件系统路径的远端 | +——————+——————————————————————————————+ |getSockName() |获取具体连接的主机/端口或UNIX文件系统路径的远端 | +——————+——————————————————————————————+ |importStream() |将流封装成套接字 | +——————+——————————————————————————————+ |lastError() |获取最后的错误代码 | +——————+——————————————————————————————+ |listen() |开始监听 | +——————+——————————————————————————————+ |read() |从套接字读取最大长度字节数 | +——————+——————————————————————————————+ |recv() |从已连接的socket接收数据 | +——————+——————————————————————————————+ |recvFrom() |从socket(导向连接也可以)接收数据 | +——————+——————————————————————————————+ |recvMsg() |读取消息 | +——————+——————————————————————————————+ |select() |socket多路选择 | +——————+——————————————————————————————+ |send() |发送数据 | +——————+——————————————————————————————+ |sendMsg() |发送消息 | +——————+——————————————————————————————+ |sendTo() |对socket(导向连接也可以)发送数据 | +——————+——————————————————————————————+ |setBlock() |设置为块模式 | +——————+——————————————————————————————+ |setNonblock() |设置为非块模式 | +——————+——————————————————————————————+ |setOption() |设置当前socket | +——————+——————————————————————————————+ |setOpt() |设置当前socket | +——————+——————————————————————————————+ |shutdown() |关闭socket的读取、写入等 | +——————+——————————————————————————————+ |strerror() |根据错误代码返回错误描述 | +——————+——————————————————————————————+ |write() |写入到socket | +——————+——————————————————————————————+

方法

__construct()

构造函数

public function __construct (
    resource $socket = null
)
参数:
名称 说明
socket 指定当前socket

__destruct()

析构函数

public function __destruct ()

accept()

返回当前套接字上的当前连接Socket对象

public function accept () : \fize\net\Socket
即为每个连接分发一个独立Socket对象

bind()

给套接字绑定名字

public function bind (
    string $address,
    int $port = 0
) : bool
参数:
名称 说明
address 服务端地址
port 指定端口
如果套接字是 AF_INET族,那么 address 必须是一个四点分法的 IP 地址(例如 127.0.0.1 ,该类型较为常用
如果套接字是 AF_UNIX族,那么 address  Unix 套接字一部分(例如 /tmp/my.sock )。

clearError()

清除套接字或者最后的错误代码上的错误

public function clearError ()

close()

关闭当前套接字资源

public function close ()

cmsgSpace()

计算应分配用于接收辅助数据的缓冲区的大小。

public static function cmsgSpace (
    int $level,
    int $type
) : int
参数:
名称 说明
level  
type  
该方法由于官方文档不齐全,暂不建议使用

connect()

客户端开启一个套接字连接

public function connect (
    string $address,
    int $port = 0
) : bool
参数:
名称 说明
address IPV4\IPV6\Unix套接字
port 端口号
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

createListen()

创建一个新的监听全部接口的套接字

public function createListen (
    int $port,
    int $backlog = 128
) : \fize\net\Socket
参数:
名称 说明
port 监听端口
backlog 连接队列的最大长度

createPair()

创建一对无区别的套接字Socket对象,并将它们存储在数组$obj中

public static function createPair (
    int $domain,
    int $type,
    int $protocol,
    array &$obj
) : bool
参数:
名称 说明
domain 指定协议 AF_INET/AF_INET6/AF_UNIX
type 套接字使用的类型
protocol 定 domain 套接字下的具体协议
obj 注意该数组保存的是Socket对象而非socket资源
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE 。

参数 `$type` :
SOCK_STREAM/SOCK_DGRAM/SOCK_SEQPACKET/SOCK_RAW/SOCK_RDM

create()

创建一个套接字

public function create (
    int $domain,
    int $type,
    int $protocol
) : \fize\net\Socket
参数:
名称 说明
domain 指定协议 AF_INET/AF_INET6/AF_UNIX
type 套接字使用的类型
protocol 定 domain 套接字下的具体协议
参数 `$type` :
SOCK_STREAM/SOCK_DGRAM/SOCK_SEQPACKET/SOCK_RAW/SOCK_RDM

getOption()

获取当前套接字的套接字选项

public function getOption (
    int $level,
    int $optname
) : mixed
参数:
名称 说明
level 指定协议级别
optname 选项名

getOpt()

获取当前套接字的套接字选项 使用socket_get_option()的别名socket_getopt()

public function getOpt (
    int $level,
    int $optname
) : mixed
参数:
名称 说明
level 指定协议级别
optname 选项名

getPeerName()

获取主机/端口或UNIX文件系统路径的远端

public function getPeerName (
    string &$address,
    int &$port = null
) : bool
参数:
名称 说明
address 获取到的主机
port 获取到的端口
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

getSockName()

获取具体连接的主机/端口或UNIX文件系统路径的远端

public function getSockName (
    string &$addr,
    int &$port = null
) : bool
参数:
名称 说明
addr 获取到的主机
port 获取到的端口
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

importStream()

将流封装成套接字

public function importStream (
    resource $stream
) : \fize\net\Socket
参数:
名称 说明
stream 要封装的流

lastError()

获取最后的错误代码

public function lastError () : int

listen()

开始监听

public function listen (
    int $backlog = 0
) : bool
参数:
名称 说明
backlog 连接队列的最大长度
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

read()

从套接字读取最大长度字节数

public function read (
    int $length,
    int $type = 2
) : string
参数:
名称 说明
length 指定最大字节长度
type 读取、断行方式

recv()

从已连接的socket接收数据

public function recv (
    string &$buf,
    int $len,
    int $flags
) : int
参数:
名称 说明
buf 从socket中获取的数据将被保存在由 buf 制定的变量中。
len 长度最多为 len 字节的数据将被接收。
flags 标识
返回值:

返回一个数字,表示接收到的字节数。如果发生了错误,则返回 FALSE

参数 `$buf` :
  如果有错误发生,如链接被重置,数据不可用等等, buf 将被设为 NULL 
参数 `$flags` :
  flags的值可以为下列任意flag的组合。
  使用按位或运算符(|) 组合不同的flag。
  MSG_OOB/MSG_PEEK/MSG_WAITALL/MSG_DONTWAIT

recvFrom()

从socket(导向连接也可以)接收数据

public function recvFrom (
    string &$buf,
    int $len,
    int $flags,
    string &$name,
    int &$port = null
) : int
参数:
名称 说明
buf 从socket中获取的数据将被保存在由 buf 制定的变量中。
len 长度最多为 len 字节的数据将被接收。
flags 标识
name 获取到的主机
port 获取到的端口
返回值:

返回一个数字,表示接收到的字节数。如果发生了错误,则返回 FALSE

参数 `$buf` :
   如果有错误发生,如链接被重置,数据不可用等等, buf 将被设为 NULL 
参数 `$flags` :
  flags的值可以为下列任意flag的组合。
  使用按位或运算符(|) 组合不同的flag。
  MSG_OOB/MSG_PEEK/MSG_WAITALL/MSG_DONTWAIT

recvMsg()

读取消息

public function recvMsg (
    string $message,
    int $flags = null
) : int
参数:
名称 说明
message  
flags 标识
返回值:

返回一个数字,表示接收到的字节数。如果发生了错误,则返回 FALSE

该方法由于官方文档未编写,不建议使用
参数 `$flags` :
  flags的值可以为下列任意flag的组合。
  使用按位或运算符(|) 组合不同的flag。
  MSG_OOB/MSG_PEEK/MSG_WAITALL/MSG_DONTWAIT

select()

socket多路选择

public static function select (
    array &$read,
    array &$write,
    array &$except,
    int $tv_sec,
    int $tv_usec = 0
) : int
参数:
名称 说明
read 监听到的发生读取的socket资源
write 监听到的发生写入的socket资源
except 监听到的发生异常的socket资源
tv_sec 服务端超时时间
tv_usec 客服端超时时间
返回值:

返回获取到的socket个数

注意返回的是socket资源而非Socket对象

send()

发送数据

public function send (
    string $buf,
    int $len,
    int $flags
) : int
参数:
名称 说明
buf 包含将要发送到远程主机的数据的缓冲区。
len 将从缓冲区发送到远程主机的字节数量。
flags MSG_OOB/MSG_EOR/MSG_EOF/MSG_DONTROUTE
返回值:

成功时返回发送的字节数量,失败时返回false

sendMsg()

发送消息

public function sendMsg (
    array $message,
    int $flags
) : int
参数:
名称 说明
message  
flags  
返回值:

成功时返回发送的字节数量,失败时返回false

该方法由于官方文档未编写,不建议使用

sendTo()

对socket(导向连接也可以)发送数据

public function sendTo (
    string $buf,
    int $len,
    int $flags,
    string $addr,
    int $port = 0
) : int
参数:
名称 说明
buf 包含将要发送到远程主机的数据的缓冲区。
len 将从缓冲区发送到远程主机的字节数量。
flags MSG_OOB/MSG_EOR/MSG_EOF/MSG_DONTROUTE
addr 获取到的主机
port 获取到的端口
返回值:

成功时返回发送的字节数量,失败时返回false

setBlock()

设置为块模式

public function setBlock () : bool

setNonblock()

设置为非块模式

public function setNonblock () : bool

setOption()

设置当前socket

public function setOption (
    int $level,
    int $optname,
    mixed $optval
) : bool
参数:
名称 说明
level 指定协议级别
optname 选项名
optval 选项值
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

setOpt()

设置当前socket

public function setOpt (
    int $level,
    int $optname,
    mixed $optval
) : bool
参数:
名称 说明
level 指定协议级别
optname 选项名
optval 选项值
返回值:

成功时返回 TRUE , 或者在失败时返回 FALSE

实际是socket_set_option的别名socket_setopt

shutdown()

关闭socket的读取、写入等

public function shutdown (
    int $how = 2
) : bool
参数:
名称 说明
how 0关闭读取、1关闭写入、2关闭全部

strerror()

根据错误代码返回错误描述

public static function strerror (
    int $errno
) : string
参数:
名称 说明
errno socket错误代码

write()

写入到socket

public function write (
    string $buffer,
    int $length = 0
) : int
参数:
名称 说明
buffer 包含将要写入到socket的数据的缓冲区。
length 指定要写入的最大字节长度
返回值:

返回写入的字节长度