[TOC]
* * * * *
## 1 網絡連接文件
~~~
Workerman/Connection/
ConnectionInterface.php ;網絡連接接口
TcpConnection.php ;Tcp網絡連接
UpdConnection.php ;Udp網絡連接
AsyncTcpConnection.php ;異步Tcp網絡連接
~~~
## 2 網絡連接接口(ConnectionInterface.php)
~~~
;連接統計:連接總數,請求總數,異常總數,發送失敗總數
public static $statistics = array(
'connection_count' => 0,
'total_request' => 0,
'throw_exception' => 0,
'send_fail' => 0,
);
;接受數據回調,連接關閉回調,發生錯誤回調
public $onMessage = null;
public $onClose = null;
public $onError = null;
~~~
~~~
;連接發送數據接口
abstract public function send($send_buffer);
;獲取客戶端Ip接口
abstract public function getRemoteIp();
;獲取客戶端端口接口
abstract public function getRemotePort();
;關閉連接接口
abstract public function close($data = null);
~~~
## 3 Tcp網絡連接(TcpConnection.php)
>[info] 成員變量
~~~
;數據讀取緩存區上限
const READ_BUFFER_SIZE = 65535;
;連接狀態:建立連接,完成建立,正在關閉,關閉完成
const STATUS_CONNECTING = 1;
const STATUS_ESTABLISH = 2;
const STATUS_CLOSING = 4;
const STATUS_CLOSED = 8;
;連接回調接口:接受數據,連接關閉,發生錯誤,數據滿,數據發送
public $onMessage = null;
public $onClose = null;
public $onError = null;
public $onBufferFull = null;
public $onBufferDrain = null;
;應用層協議,所屬worker進程,連接id,所屬worker的id
public $protocol = null;
public $worker = null;
public $id = 0;
protected $_id = 0;
;數據包發送緩存最大上限,數據包發送緩存默認上限,
public $maxSendBufferSize = 1048576;
public static $defaultMaxSendBufferSize = 1048576;
;最大可發送數據包
public static $maxPackageSize = 10485760;
protected static $_idRecorder = 1;
;socket套接符,發送緩存,接受緩存,當前數據包大小
protected $_socket = null;
protected $_sendBuffer = '';
protected $_recvBuffer = '';
protected $_currentPackageLength = 0;
;當前鏈接狀態,客戶端地址,是否阻塞
protected $_status = self::STATUS_ESTABLISH;
protected $_remoteAddress = '';
protected $_isPaused = false;
~~~
>[info] 成員方法
### __construct($socket, $remote_address = ''):Tcp連接構造函數
~~~
public function __construct($socket, $remote_address = '')
~~~
> $socket: 監聽套接字
> $remote_address:客戶端地址
* * * * *
### send($send_buffer, $raw = false):tcp數據發送接口
~~~
public function send($send_buffer, $raw = false)
~~~
> $send_buffer:發送內容
> $raw:??
* * * * *
### getRemoteIp():獲取客戶端ip
~~~
public function getRemoteIp()
~~~
### getRemotePort():獲取客戶端端口
~~~
public function getRemotePort()
~~~
### pauseRecv():阻塞讀數據
~~~
public function pauseRecv()
~~~
### resumeRecv():恢復讀數據
~~~
public function resumeRecv()
~~~
### baseRead($socket, $check_eof = true):tcp讀數據
~~~
public function baseRead($socket, $check_eof = true)
~~~
> $socket:socket描述符
> $check_eof:??
* * * * *
### baseWrite():tcp寫數據
~~~
public function baseWrite()
~~~
### pipe($dest):數據重定向
~~~
public function pipe($dest)
~~~
> $dest:重定向目的
* * * * *
### consumeRecvBuffer($length):截取數據接收區
~~~
public function consumeRecvBuffer($length)
~~~
> $length:截取長度
* * * * *
### close($data = null):tcp連接關閉接口
~~~
public function close($data = null)
~~~
> $data:關閉時發送數據
* * * * *
### destroy():tcp鏈接注銷接口
~~~
public function destroy()
~~~
### getSocket():獲取連接socket描述符
~~~
public function getSocket()
~~~
### checkBufferIsFull():檢測發送緩沖區是否達到上限
~~~
protected function checkBufferIsFull()
~~~
## 4 Udp網絡連接(UpdConnection.php)
>[info] 成員變量
~~~
;udp應用層協議
public $protocol = null;
;udp連接socket描述
protected $_socket = null;
;客戶端ip
protected $_remoteIp = '';
;客戶端端口
protected $_remotePort = 0;
;客戶端地址
protected $_remoteAddress = '';
~~~
>[info] 成員方法
### __construct($socket, $remote_address):Udp構造函數
`public function __construct($socket, $remote_address)`
### send($send_buffer, $raw = false):Udp連接數據發送接口
`public function send($send_buffer, $raw = false)`
### getRemoteIp():獲取客戶端ip
`public function getRemoteIp()`
### getRemotePort():獲取客戶端端口
`public function getRemotePort()`
### close($data = null):連接關閉
`public function close($data = null)`
## 5 異步Tcp網絡連接(AsyncTcpConnection.php)
>[info] 成員變量
~~~
;連接回調
public $onConnect = null;
;連接默認狀態
protected $_status = self::STATUS_CONNECTING;
;客戶端主機
protected $_remoteHost = '';
~~~
>[info] 成員方法
### __construct($remote_address):異步Tcp構造函數
public function __construct($remote_address)
### connect():建立 異步Tcp連接
public function connect()
### getRemoteHost():獲取客戶端主機
public function getRemoteHost()
### emitError($code, $msg):手動觸發錯誤回調
protected function emitError($code, $msg)
### checkConnection($socket):檢查連接是否建立
public function checkConnection($socket)
## 4 網絡連接總結
網絡連接實現服務器與客戶端的對應關系。
~~~
ConnectionInterface.php 網絡連接抽象
Tcp 連接網絡連接
Udp 數據包網絡連接
異步Tcp 異步連接
~~~