SlideShare a Scribd company logo
1 of 25
Download to read offline
php 應用之一 socket funion 
黃志賢 hoyo 
www.hoyo.idv.tw
應用系列說明 
Socket Functions 
Filesystem Functions 
Output Control Functions 
Process Control Functions 
Shared Memory and IPC Functions 
截至目前有 182 個函式庫
Command Line 
Interface
第一階段:Socket 
了解 Server / Client 在通訊時的差別 
了解 TCP / UDP 的特性 
可以建立 Client 連線到 Server 要求資料 
可以建立 Server Listen 環境提供服務 
應用一:偽 web server
第二階段:Server Push 
了解 Server Push 的特性 
透過記憶體交換達到即時效果 
: 
: 
應用二:php 聊天室
本片開始
Socket Function 
socket_ accept 
socket_ bind 
socket_ close 
socket_ connect 
socket_ create 
socket_ listen 
socket_ read 
socket_ recv 
socket_ recvfrom 
socket_ send 
socket_ sendto 
socket_ shutdown 
socket_ write
TCP Client 
建立 
$socket = @socket_create ( AF_INET,SOCK_STREAM, SOL_TCP); 
@socket_connect( $socket, $ipaddress, $port ); 
怎麼問 
socket_write($socket,$command,strlen( $command )); 
怎麼收 
$read = @socket_read ($socket, 64);
TCP Server 
建立 
$socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP ); 
socket_bind ( $socket, $address, $port ); 
socket_listen ( $socket ); 
怎麼等 
$msgsock = @socket_accept ( $socket ); while( $buff = @socket_read ( $msgsock, 1024 ) ) { } 
怎麼回 
socket_send( $msgsock, $desc, strlen($desc), 0 );
UDP Client 
建立 
$sock_udp = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); 
怎麼丟 
socket_sendto($sock_udp, $temp, strlen($temp), 0, '239.255.255.250', 1900);
UDP Server 
建立 
$socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP); 
socket_bind ( $socket, $address, $port ); 
死命的收 
while (1) { @socket_recvfrom( $socket, $buffer, 2048, 0, $clientip, $clientport ); 
}
請看操演 
找一位助理
TCP Client
TCP Server
UDP Client
UDP Server
實作 HyperText Transfer Protocol 
http://www.w3.org/Protocols/
demo 
php web.php &
Internet Explorer 6.0 
GET / HTTP/1.1 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shock 
wave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application 
/msword, */* 
Accept-Language: zh-tw 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Med 
ia Center PC 3.0; .NET CLR 1.0.3705) 
Host: 127.0.0.1:800 
Connection: Keep-Alive
Firefox 2.0 
GET / HTTP/1.1 
Host: 127.0.0.1:800 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.1) Gecko/20 
061204 Firefox/2.0.0.1 
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai 
n;q=0.8,image/png,*/*;q=0.5 
Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3 
Accept-Encoding: gzip,deflate 
Accept-Charset: Big5,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive
使用 netstat 檢視連線狀態
HTTP 通訊流程 
瀏覽器 
WEB Server 
判斷想要取得的檔案 
將設定的首頁傳回
HTTP 通訊流程 
瀏覽器 
WEB Server 
Listen Port ex:800 
將設定的首頁傳回 
Open Port ex:1217 
在未設定下,Client 和 server 通訊時, 
會使用那一個 port 是無法預期的
參考資源 
TCP 與 UDP http://www.study-area.org/network/network_ip_tcp.htm 
TCP/IP 工作模型 http://www.study-area.org/network/network_ip_model.htm
參考工具 
netstat :: 得知連線狀態 
echo :: 顯示程式結果 
What Is Transferring :: TCP/UDP 
Ethereal :: ALL (UPnP)

More Related Content

What's hot

twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐twMVC
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战fengmk2
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Eric Xiao
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
Node.js從無到有 基本課程
Node.js從無到有 基本課程Node.js從無到有 基本課程
Node.js從無到有 基本課程Simon Su
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
Javascript stacktrace
Javascript stacktraceJavascript stacktrace
Javascript stacktracecazhfe
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC
 
超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8twMVC
 
ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8twMVC
 
PHP/NodeJS/Redis项目实战
PHP/NodeJS/Redis项目实战PHP/NodeJS/Redis项目实战
PHP/NodeJS/Redis项目实战Sun Zephyr
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战fengmk2
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARPtwMVC
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5lovingprince58
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Joseph Chiang
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用hugo
 

What's hot (19)

twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
twMVC#26 | 淺談 ASP.NET Caching 技術與實踐
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
Html5
Html5Html5
Html5
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
 
Paveo Tweak WordPress
Paveo Tweak WordPressPaveo Tweak WordPress
Paveo Tweak WordPress
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
Node.js從無到有 基本課程
Node.js從無到有 基本課程Node.js從無到有 基本課程
Node.js從無到有 基本課程
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Javascript stacktrace
Javascript stacktraceJavascript stacktrace
Javascript stacktrace
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8
 
ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8ASP.NET MVC Web API -twMVC#8
ASP.NET MVC Web API -twMVC#8
 
PHP/NodeJS/Redis项目实战
PHP/NodeJS/Redis项目实战PHP/NodeJS/Redis项目实战
PHP/NodeJS/Redis项目实战
 
Node Web开发实战
Node Web开发实战Node Web开发实战
Node Web开发实战
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
 
Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5Jetty服务器架构及调优.v2 2011-5
Jetty服务器架构及调优.v2 2011-5
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#41 The journey of source generator
twMVC#41 The journey of source generator
 
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
 
lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用lua & ngx_lua 的介绍与应用
lua & ngx_lua 的介绍与应用
 

Viewers also liked

網路最佳化管理實務 - 第五章
網路最佳化管理實務 - 第五章網路最佳化管理實務 - 第五章
網路最佳化管理實務 - 第五章志賢 黃
 
愛愛上雲端
愛愛上雲端愛愛上雲端
愛愛上雲端志賢 黃
 
淺談Html5及建立完整 web socket 應用觀念
淺談Html5及建立完整 web socket 應用觀念淺談Html5及建立完整 web socket 應用觀念
淺談Html5及建立完整 web socket 應用觀念志賢 黃
 
翻雲手 同時出版紙書、電子書的線上平台
翻雲手 同時出版紙書、電子書的線上平台翻雲手 同時出版紙書、電子書的線上平台
翻雲手 同時出版紙書、電子書的線上平台志賢 黃
 
認識 Xp embedded
認識 Xp embedded認識 Xp embedded
認識 Xp embedded志賢 黃
 
網路最佳化管理實務 - 第六章
網路最佳化管理實務 - 第六章網路最佳化管理實務 - 第六章
網路最佳化管理實務 - 第六章志賢 黃
 

Viewers also liked (6)

網路最佳化管理實務 - 第五章
網路最佳化管理實務 - 第五章網路最佳化管理實務 - 第五章
網路最佳化管理實務 - 第五章
 
愛愛上雲端
愛愛上雲端愛愛上雲端
愛愛上雲端
 
淺談Html5及建立完整 web socket 應用觀念
淺談Html5及建立完整 web socket 應用觀念淺談Html5及建立完整 web socket 應用觀念
淺談Html5及建立完整 web socket 應用觀念
 
翻雲手 同時出版紙書、電子書的線上平台
翻雲手 同時出版紙書、電子書的線上平台翻雲手 同時出版紙書、電子書的線上平台
翻雲手 同時出版紙書、電子書的線上平台
 
認識 Xp embedded
認識 Xp embedded認識 Xp embedded
認識 Xp embedded
 
網路最佳化管理實務 - 第六章
網路最佳化管理實務 - 第六章網路最佳化管理實務 - 第六章
網路最佳化管理實務 - 第六章
 

Similar to PHP 應用之一 socket funion : 偽 WEB Server

高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 Renaun Erickson
 
IoT開發平台NodeMCU
IoT開發平台NodeMCUIoT開發平台NodeMCU
IoT開發平台NodeMCU承翰 蔡
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchangChang Mt
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结Yiwei Ma
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShopPhilip Zheng
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础xki
 
Arduino Yún使用Http restful api控制io
Arduino Yún使用Http restful api控制ioArduino Yún使用Http restful api控制io
Arduino Yún使用Http restful api控制io吳錫修 (ShyiShiou Wu)
 
Java技术讲座 网络编程
Java技术讲座 网络编程Java技术讲座 网络编程
Java技术讲座 网络编程xujie
 
Unix socket
Unix socketUnix socket
Unix socketst900278
 
Island arch
Island archIsland arch
Island archfaryang
 
NodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiNodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiJackson Tian
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐zhangsuoyong
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发litaocheng
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介Xu Wang
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析mysqlops
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.toleone
 

Similar to PHP 應用之一 socket funion : 偽 WEB Server (20)

高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
 
network2
network2network2
network2
 
IoT開發平台NodeMCU
IoT開發平台NodeMCUIoT開發平台NodeMCU
IoT開發平台NodeMCU
 
Openshift by mtchang
Openshift by mtchangOpenshift by mtchang
Openshift by mtchang
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结
 
Docker容器微服務 x WorkShop
Docker容器微服務 x WorkShopDocker容器微服務 x WorkShop
Docker容器微服務 x WorkShop
 
WEB 安全基础
WEB 安全基础WEB 安全基础
WEB 安全基础
 
Arduino Yún使用Http restful api控制io
Arduino Yún使用Http restful api控制ioArduino Yún使用Http restful api控制io
Arduino Yún使用Http restful api控制io
 
Java技术讲座 网络编程
Java技术讲座 网络编程Java技术讲座 网络编程
Java技术讲座 网络编程
 
Unix socket
Unix socketUnix socket
Unix socket
 
Island arch
Island archIsland arch
Island arch
 
NodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 ShanghaiNodeJS快速服务端开发 朝沐金风 Shanghai
NodeJS快速服务端开发 朝沐金风 Shanghai
 
Php Webservers
Php WebserversPhp Webservers
Php Webservers
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
张所勇:前端开发工具推荐
张所勇:前端开发工具推荐张所勇:前端开发工具推荐
张所勇:前端开发工具推荐
 
Erlang游戏开发
Erlang游戏开发Erlang游戏开发
Erlang游戏开发
 
ZeroMQ简介
ZeroMQ简介ZeroMQ简介
ZeroMQ简介
 
Php应用程序常见安全问题解析
Php应用程序常见安全问题解析Php应用程序常见安全问题解析
Php应用程序常见安全问题解析
 
深入浅出Netty l.t
深入浅出Netty   l.t深入浅出Netty   l.t
深入浅出Netty l.t
 

PHP 應用之一 socket funion : 偽 WEB Server

  • 1. php 應用之一 socket funion 黃志賢 hoyo www.hoyo.idv.tw
  • 2. 應用系列說明 Socket Functions Filesystem Functions Output Control Functions Process Control Functions Shared Memory and IPC Functions 截至目前有 182 個函式庫
  • 4. 第一階段:Socket 了解 Server / Client 在通訊時的差別 了解 TCP / UDP 的特性 可以建立 Client 連線到 Server 要求資料 可以建立 Server Listen 環境提供服務 應用一:偽 web server
  • 5. 第二階段:Server Push 了解 Server Push 的特性 透過記憶體交換達到即時效果 : : 應用二:php 聊天室
  • 7. Socket Function socket_ accept socket_ bind socket_ close socket_ connect socket_ create socket_ listen socket_ read socket_ recv socket_ recvfrom socket_ send socket_ sendto socket_ shutdown socket_ write
  • 8. TCP Client 建立 $socket = @socket_create ( AF_INET,SOCK_STREAM, SOL_TCP); @socket_connect( $socket, $ipaddress, $port ); 怎麼問 socket_write($socket,$command,strlen( $command )); 怎麼收 $read = @socket_read ($socket, 64);
  • 9. TCP Server 建立 $socket = socket_create ( AF_INET, SOCK_STREAM, SOL_TCP ); socket_bind ( $socket, $address, $port ); socket_listen ( $socket ); 怎麼等 $msgsock = @socket_accept ( $socket ); while( $buff = @socket_read ( $msgsock, 1024 ) ) { } 怎麼回 socket_send( $msgsock, $desc, strlen($desc), 0 );
  • 10. UDP Client 建立 $sock_udp = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP ); 怎麼丟 socket_sendto($sock_udp, $temp, strlen($temp), 0, '239.255.255.250', 1900);
  • 11. UDP Server 建立 $socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP); socket_bind ( $socket, $address, $port ); 死命的收 while (1) { @socket_recvfrom( $socket, $buffer, 2048, 0, $clientip, $clientport ); }
  • 17. 實作 HyperText Transfer Protocol http://www.w3.org/Protocols/
  • 19. Internet Explorer 6.0 GET / HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shock wave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application /msword, */* Accept-Language: zh-tw Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Med ia Center PC 3.0; .NET CLR 1.0.3705) Host: 127.0.0.1:800 Connection: Keep-Alive
  • 20. Firefox 2.0 GET / HTTP/1.1 Host: 127.0.0.1:800 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.1.1) Gecko/20 061204 Firefox/2.0.0.1 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plai n;q=0.8,image/png,*/*;q=0.5 Accept-Language: zh-tw,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: Big5,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
  • 22. HTTP 通訊流程 瀏覽器 WEB Server 判斷想要取得的檔案 將設定的首頁傳回
  • 23. HTTP 通訊流程 瀏覽器 WEB Server Listen Port ex:800 將設定的首頁傳回 Open Port ex:1217 在未設定下,Client 和 server 通訊時, 會使用那一個 port 是無法預期的
  • 24. 參考資源 TCP 與 UDP http://www.study-area.org/network/network_ip_tcp.htm TCP/IP 工作模型 http://www.study-area.org/network/network_ip_model.htm
  • 25. 參考工具 netstat :: 得知連線狀態 echo :: 顯示程式結果 What Is Transferring :: TCP/UDP Ethereal :: ALL (UPnP)