PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法
本文實(shí)例講述了PHP向socket服務(wù)器收發(fā)數(shù)據(jù)的方法。分享給大家供大家參考。具體如下:
在PHP要向其它程序發(fā)送數(shù)據(jù),則需要使用到php的socket功能來(lái)實(shí)例了,下面我們簡(jiǎn)單看一個(gè)實(shí)例,代碼如下:
@host(string) socket服務(wù)器IP
@post(int) 端口
@str(string) 要發(fā)送的數(shù)據(jù)
@back 1|0 socket端是否有數(shù)據(jù)返回
返回true|false|服務(wù)端數(shù)據(jù)
*/
function sendSocketMsg($host,$port,$str,$back=0){
$socket = socket_create(AF_INET,SOCK_STREAM,0);
if ($socket < 0) return false;
$result = @socket_connect($socket,$host,$port);
if ($result == false)return false;
socket_write($socket,$str,strlen($str));
if($back!=0){
$input = socket_read($socket,1024);
socket_close ($socket);
return $input;
}else{
socket_close ($socket);
return true;
}
}
socker_read的第二個(gè)參數(shù)用以指定讀入的字節(jié)數(shù),你可以通過(guò)它來(lái)限制從客戶(hù)端獲取數(shù)據(jù)的大小.
sock函數(shù)介紹
函數(shù)名 | 描述 |
socket_accept() | 接受一個(gè)Socket連接 |
socket_bind() | 把socket綁定在一個(gè)IP地址和端口上 |
socket_clear_error() | 清除socket的錯(cuò)誤或者最后的錯(cuò)誤代碼 |
socket_close() | 關(guān)閉一個(gè)socket資源 |
socket_connect() | 開(kāi)始一個(gè)socket連接 |
socket_create_listen() | 在指定端口打開(kāi)一個(gè)socket監(jiān)聽(tīng) |
socket_create_pair() | 產(chǎn)生一對(duì)沒(méi)有區(qū)別的socket到一個(gè)數(shù)組里 |
socket_create() | 產(chǎn)生一個(gè)socket,相當(dāng)于產(chǎn)生一個(gè)socket的數(shù)據(jù)結(jié)構(gòu) |
socket_get_option() | 獲取socket選項(xiàng) |
socket_getpeername() | 獲取遠(yuǎn)程類(lèi)似主機(jī)的ip地址 |
socket_getsockname() | 獲取本地socket的ip地址 |
socket_iovec_add() | 添加一個(gè)新的向量到一個(gè)分散/聚合的數(shù)組 |
socket_iovec_alloc() | 這個(gè)函數(shù)創(chuàng)建一個(gè)能夠發(fā)送接收讀寫(xiě)的iovec數(shù)據(jù)結(jié)構(gòu) |
socket_iovec_delete() | 刪除一個(gè)已經(jīng)分配的iovec |
socket_iovec_fetch() | 返回指定的iovec資源的數(shù)據(jù) |
socket_iovec_free() | 釋放一個(gè)iovec資源 |
socket_iovec_set() | 設(shè)置iovec的數(shù)據(jù)新值 |
socket_last_error() | 獲取當(dāng)前socket的最后錯(cuò)誤代碼 |
socket_listen() | 監(jiān)聽(tīng)由指定socket的所有連接 |
socket_read() | 讀取指定長(zhǎng)度的數(shù)據(jù) |
socket_readv() | 讀取從分散/聚合數(shù)組過(guò)來(lái)的數(shù)據(jù) |
socket_recv() | 從socket里結(jié)束數(shù)據(jù)到緩存 |
socket_recvfrom() | 接受數(shù)據(jù)從指定的socket,如果沒(méi)有指定則默認(rèn)當(dāng)前socket |
socket_recvmsg() | 從iovec里接受消息 |
socket_select() | 多路選擇 |
socket_send() | 這個(gè)函數(shù)發(fā)送數(shù)據(jù)到已連接的socket |
socket_sendmsg() | 發(fā)送消息到socket |
socket_sendto() | 發(fā)送消息到指定地址的socket |
socket_set_block() | 在socket里設(shè)置為塊模式 |
socket_set_nonblock() | socket里設(shè)置為非塊模式 |
socket_set_option() | 設(shè)置socket選項(xiàng) |
socket_shutdown() | 這個(gè)函數(shù)允許你關(guān)閉讀、寫(xiě)、或者指定的socket |
socket_strerror() | 返回指定錯(cuò)誤號(hào)的詳細(xì)錯(cuò)誤 |
socket_write() | 寫(xiě)數(shù)據(jù)到socket緩存 |
socket_writev() | 寫(xiě)數(shù)據(jù)到分散/聚合數(shù)組 |
注意:socket_read函數(shù)會(huì)一直讀取殼戶(hù)端數(shù)據(jù),直到遇見(jiàn)n,t或者字符,PHP腳本把這些字符看做是輸入的結(jié)束符.
希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(一)
- php獲取服務(wù)器端mac和客戶(hù)端mac的地址支持WIN/LINUX
- PHP 服務(wù)器配置(使用Apache及IIS兩種方法)
- PHP 顯示客戶(hù)端IP與服務(wù)器IP的代碼
- PHP實(shí)現(xiàn)Socket服務(wù)器的代碼
- php獲取服務(wù)器信息的實(shí)現(xiàn)代碼
- php socket客戶(hù)端及服務(wù)器端應(yīng)用實(shí)例
- 利用php獲取服務(wù)器時(shí)間的實(shí)現(xiàn)代碼
- PHP實(shí)現(xiàn)服務(wù)器狀態(tài)監(jiān)控的方法
- PHP程序員簡(jiǎn)單的開(kāi)展服務(wù)治理架構(gòu)操作詳解(二)
相關(guān)文章
基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問(wèn)題
下面小編就為大家分享一篇基于PHP安裝zip拓展,以及l(fā)ibzip安裝的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03PHP 中檢查或過(guò)濾IP地址的實(shí)現(xiàn)代碼
網(wǎng)絡(luò)環(huán)境異常復(fù)雜,有時(shí)候我們不得不禁止一些惡意用戶(hù)訪問(wèn),禁止的方式有很多種,其中一種就是通過(guò) IP 來(lái)限制,本文提供的方法允許你通過(guò) IP 區(qū)間、CIDR (Classless Inter-Domain Routing)及單個(gè) IP 格式來(lái)檢查或過(guò)濾 IP 地址2011-11-11PHP中遍歷stdclass object的實(shí)現(xiàn)代碼
從網(wǎng)上查到的方法是 用get_object_vars 把類(lèi)類(lèi)型轉(zhuǎn)換成數(shù)組 然后在用 foreach 遍歷即可2011-06-06在PHP中輸出JS語(yǔ)句以及亂碼問(wèn)題的解決方案
今天小編就為大家分享一篇關(guān)于在PHP中輸出JS語(yǔ)句以及亂碼問(wèn)題的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02thinkphp5實(shí)用入門(mén)進(jìn)階知識(shí)點(diǎn)和各種常用功能代碼匯總
這篇文章主要介紹了thinkphp5實(shí)用入門(mén)進(jìn)階知識(shí)點(diǎn)和各種常用功能代碼匯總的相關(guān)資料,需要的朋友可以參考下2023-03-03