導航:首頁 > 編程語言 > php搭建socket伺服器

php搭建socket伺服器

發布時間:2022-04-24 17:44:40

php作為服務端,安卓作為客戶端進行socket通信,如何實現

通過請求返回數據啊!比如安卓可以通過URL請求頁面,然後PHP接到請求通知返數據給安卓,安卓接到數據之後在處理,就可以了!

② apache怎麼啟動Php寫的socket服務

把PHP目錄加入到系統環境變數中,然後進入終端模式,輸入php -f 文件路徑,回車即可。

③ 如何用PHP實現Socket伺服器

因為只有調用了accept客戶端才能連上,你如果accept下面接一個循環,那麼第二個用戶不是說能不能進這個循環,而是連不進……此時只有第一個用戶break出了循環,然後程序回頭再調用accept,第二個用戶才能連上。
用多進程來處理如何?因為accept一個客戶端以後,應該是馬上准備accept下一個客戶端才對,而不是處理完現在這個客戶端才accept下一個客戶端。
socket_accept以後,直接調用
pcntl_fork(),此時進程會分裂為兩個,其中一個的pnctl_fork返回值是0,另一個不是0。不是0的那個直接繼續調用socket_accept即可,是0的那個處理客戶端請求。
pnctl_fork不知道在windows下能不能用。
不過返回不是0的那個進程並不是這樣就完事了,還要調用pcntl_wait防止子進程卡在那邊沒有完全結束。你可以在主進程里時不時就調用這個,配上WNOHANG作為option參數防止沒有子進程需要wait的時候卡在那邊。
這都是linux下常用的處理手段。說實話本來我想讓你用多線程的,不過看了一圈不知道php里怎麼用線程,倒是找到了用進程的方式,所以就

④ 使用php開發服務端,c++做客戶端,用socket進行通信,具體如何操作,謝謝...

這種東西做過,不過源代碼是不可能了:P。雙方通過Socket通信,需要了解每種語言操作Socket的方式。Java只寫ServerSocket的代碼,負責接受數據;而C++同樣只是向Java所在伺服器的指定Socket發數據就可以了.這里有一個需要注意的,
數據格式
的問題.
這個給你一個建議,不要使用Java和C++的方法來讀寫數據,而把數據都看做
二進制流
,自己來定義數據的含義,自己來負責轉換.

⑤ php怎麼創建開啟socket服務

如果沒有裝socket擴展,先安裝socket擴展

擴展安裝好後,就可以通過調用擴展提供的介面創建socket

具體介面看官方文檔:網頁鏈接

⑥ PHP免費空間 可以做SOCKET伺服器嗎

對函數不太懂,這個是不是

⑦ 利用PHP如何實現Socket伺服器

socket伺服器的工作方式是這樣的,不間斷地運行以等待客戶端的連接。一旦客戶端連接上了,伺服器就會將它添加到客戶名單中,然後開始等待來自客戶端的消息。

不要走開,下面是完整的源代碼:

//_time_limit(0);//Settheipandportwewilllistenon$address='localhost';$port=10000;$max_clients=10;//$client=Array();//CreateaTCPStreamsocket$sock=socket_create(AF_INET,SOCK_STREAM,0);//Bindthesockettoanaddress/portsocket_bind($sock,$address,$port)ordie('Couldnotbindtoaddress');//_listen($sock);echo"Waitingforconnections...
";//Loopcontinuouslywhile(true){//$read[0]=$sock;for($i=0;$i<$max_clients;$i++){if(isset($client[$i]['sock']))$read[$i+1]=$client[$i]['sock'];}//Setupablockingcalltosocket_select()if(socket_select($read,$write=NULL,$except=NULL,$tv_sec=5)<1)continue;/**/if(in_array($sock,$read)){for($i=0;$i<$max_clients;$i++){if(empty($client[$i]['sock'])){$client[$i]['sock']=socket_accept($sock);echo"Newclientconnected$i
";break;}elseif($i==$max_clients-1)echo"Toomanyclients...
";}}//endifin_array//Ifaclientistryingtowrite-handleitnowfor($i=0;$i<$max_clients;$i++){//foreachclientif(isset($client[$i]['sock'])){if(in_array($client[$i]['sock'],$read)){$input=socket_read($client[$i]['sock'],1024);if($input==null){echo"Clientdisconnecting$i
";//($client[$i]);}else{echo"Newinputreceived$i
";//sendittotheotherclientsfor($j=0;$j<$max_clients;$j++){if(isset($client[$j]['sock'])&&$j!=$i){echo"Writing'$input'toclient$j
";socket_write($client[$j]['sock'],$input,strlen($input));}}if($input=='exit'){//requesteddisconnectsocket_close($client[$i]['sock']);}}}else{echo"Clientdisconnected$i
";//Closethesocketsocket_close($client[$i]['sock']);unset($client[$i]);}}}}//endwhile//Closethemastersocketssocket_close($sock);

哎呀,乍一看這似乎是一個大工程,但是我們可以先將它分解為幾個較小的部分。

第一部分是創建伺服器。Lines:2至20。

這部分代碼設置了變數、地址、埠、最大客戶端和客戶端數組。接下來創建socket並將其綁定到我們指定的地址和埠上。

下面我們要做的事情就是執行一個死循環(實際上我們是故意的!)。Lines:22至32。

在這部分代碼中我們做的第一步是設置 $read 數組。此數
組包含所有客戶端的套接字和我們主伺服器的套接字。這個變數稍後會用於select語句:告訴PHP監聽來自這些客戶端的每一條消息。

socket_select()的最後一個參數告訴我們的伺服器在返回值之前最多等待5秒鍾。如果它的返回值小於1,那麼就表示沒有收到任何數據,所以只需要返回循環頂部,繼續等待。

腳本的下一個部分,是增加新的客戶端到數組中。Lines:33至44。

將新的客戶端放置在列表的末尾。檢查以確保客戶端的數量沒有超過我們想要伺服器處理的數量。

下面要介紹的代碼塊相當大,也是伺服器的主要部分。當客戶端將消息發送到伺服器時,就需要這塊代碼挺身而出來處理。消息可以是各種各樣的,斷開消息、實際斷開——只要是伺服器需要處理的消息。Lines:46至末尾。

代碼循環通過每個客戶端並檢查是否收到來自於它們的消息。如果是,獲取輸入的內容。根據輸入來檢查這是否是一個斷開消息,如果是那就從數組中刪除它們,反之,那它就是一個正常的消息,那我們的伺服器再次通過所有客戶端,並一個一個寫信息給他們,跳過發送者。

好了,下面試試創造你自己的聊天伺服器吧!

⑧ PHP如何開啟socket

如果你是windows系統,請進入安裝目錄,找到php.ini這個文件,找到下面一行。
找到extension=php_sockets.dll一句,將前面的;去掉
;是注釋的意思。

如果你的Linux系統,重新編譯,./configure --help,自己看去,相信你懂的,你也必須學著看這個了。想看看自己的php是否有這個拓展,使用php -m命令來看,如果有,就不用重新編譯了。
--enable-sockets

閱讀全文

與php搭建socket伺服器相關的資料

熱點內容
機明自動編程軟體源碼 瀏覽:325
php埠號設置 瀏覽:540
phperegreplace 瀏覽:319
androidgridview翻頁 瀏覽:537
ssh協議編程 瀏覽:634
如何開我的世界電腦伺服器地址 瀏覽:861
玄關pdf 瀏覽:609
程序員學習論壇 瀏覽:940
程序員的毒雞湯怎麼做 瀏覽:547
安卓怎麼降級軟體到手機 瀏覽:281
雲與伺服器入門書籍推薦產品 瀏覽:636
delphi編程助手 瀏覽:761
電腦遇到伺服器問題怎麼辦 瀏覽:515
加工中心編程結束方法 瀏覽:295
了解什麼是web伺服器 瀏覽:139
面向對象的編程的基本特徵 瀏覽:717
php定時執行任務linux 瀏覽:787
php數組中刪除元素 瀏覽:724
螢石雲伺服器視頻 瀏覽:269
防火牆配置伺服器熱備的虛擬地址 瀏覽:189