# socket_create
* * * * *
說明:
> 創建并返回一個套接字,也稱作一個通訊節點。一個典型的網絡連接由 2 個套接字構成,一個運行在客戶端,另一個運行在服務器端。
語法:
~~~
resource socket_create ( int $domain , int $type , int $protocol )
~~~
參數:
| 參數 | 描述 |
| --- | --- |
| domain | 為創建的套接字指定協議|
| type | 套接字使用的類型|
| protocol | 設置指定 domain 套接字下的具體協議。這個值可以使用 getprotobyname() 函數進行讀取。如果所需的協議是 TCP 或 UDP,可以直接使用常量 SOL_TCP 和 SOL_UDP |
:-: 可用的地址/協議
| domain | 描述 |
| --- | --- |
| AF_INET | IPv4 網絡協議TCP 和 UDP 都可使用此協議 |
| AF_INET6 | IPv6 網絡協議。TCP 和 UDP 都可使用此協議 |
| AF_UNIX | 本地通訊協議。具有高性能和低成本的 IPC(進程間通訊) |
:-: 可用的套接字類型
| type | 描述 |
| --- | --- |
| SOCK_STREAM | 提供一個順序化的、可靠的、全雙工的、基于連接的字節流。支持數據傳送流量控制機制。TCP 協議即基于這種流式套接字 |
| SOCK_DGRAM | 提供數據報文的支持。(無連接,不可靠、固定最大長度).UDP協議即基于這種數據報文套接字 |
| SOCK_SEQPACKET | 提供一個順序化的、可靠的、全雙工的、面向連接的、固定最大長度的數據通信;數據端通過接收每一個數據段來讀取整個數據包 |
| SOCK_RAW | 提供讀取原始的網絡協議。這種特殊的套接字可用于手工構建任意類型的協議。一般使用這個套接字來實現 ICMP 請求(例如 ping) |
| SOCK_RDM | 提供一個可靠的數據層,但不保證到達順序。一般的操作系統都未實現此功能 |
:-: 常見協議
| protocol | 描述 |
| --- | --- |
| icmp | Internet Control Message Protocol 主要用于網關和主機報告錯誤的數據通信。例如“ping”命令(在目前大部分的操作系統中)就是使用 ICMP 協議實現的 |
| udp | User Datagram Protocol 是一個無連接的、不可靠的、具有固定最大長度的報文協議。由于這些特性,UDP 協議擁有最小的協議開銷 |
| tcp | Transmission Control Protocol 是一個可靠的、基于連接的、面向數據流的全雙工協議。TCP 能夠保障所有的數據包是按照其發送順序而接收的。如果任意數據包在通訊時丟失,TCP 將自動重發數據包直到目標主機應答已接收。因為可靠性和性能的原因,TCP 在數據傳輸層使用 8bit 字節邊界。因此,TCP 應用程序必須允許傳送部分報文的可能 |
返回值:
| 成功 | 失敗 |
| --- | --- |
| true | false |
返回失敗,錯誤代碼會傳入 socket_last_error() ,如果將此參數傳入 socket_strerror() 則可以得到錯誤的文字說明。
技術細節:
PHP版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
實例:
[參考 socket_accept 的實例代碼](http://www.hmoore.net/mangyusisha/php/549286)
資料來源:
http://php.net/manual/zh/function.socket-create.php
https://www.cnblogs.com/loveyoume/p/6076101.html
- 前言
- 函數參考
- Socket 函數
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_getpeername
- socket_getsockname
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_select
- socket_send
- socket_set_block
- socket_set_nonblock
- SplQueue
- 魔術方法
- 魔術常量
- 雜項
- backlog的用處
- new self()和new static()的區別
- PHP變量的生命周期
- PHP抽象類
- 對象接口
- PHP中的常用關鍵字
- 常量
- 內存泄露
- global 與 $GLOBAL
- 簡單說明CGI和動態請求是什么
- 設計模式
- 單例模式
- 工廠模式
- 適配器模式
- 策略模式
- 觀察者模式
- 控制反轉IoC簡介
- session
- use_trans_sid
- auto_start
- session_id
- cookie_secure
- 面試
- 數據庫相關
- 語句相關
- 索引相關
- 字段相關
- PHP相關
- 字符串相關
- 函數相關
- 運算符優先級相關
- 錯誤相關
- redis相關
- 10個常見的Redis面試"刁難"問題
- mysql
- MySQL中的鎖
- MySQL存儲引擎MyISAM 和 InnoDB的區別
- MySQL半同步復制
- explain 命令詳解
- 索引
- 數據庫事務
- MySQL和B樹的那些事
- git
- github----向開源框架提交pr的過程
- 推薦博客
- linux
- 命令
- free
- 高并發
- 搶購/秒殺功能
- 算法
- 一致性Hash算法