国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP 如何進行socket套節字的連接

2020-03-22 19:17:28
字體:
來源:轉載
供稿:網友
socket通常也稱作 套接字 ,用于描述IP地址和端口 , 是一個通信鏈的句柄。html' target='_blank'>應用程序通常通過“套接字”先服務器發出請求或者應答網絡請求。本文主要講述的是在PHP中套節字之間的連接過程,具有一定的參考價值,感興趣的朋友可以學習了解一下。

根據鏈接啟動的方式以及本地套接字要連接的目標 , 套節字之間的連接過程可以分為三個步驟:

1、服務器監聽:是服務器端套接字并不定位具體的客戶端套接字 , 而是處于等待連接的狀態 ,實時監控網絡狀態。

2、客戶端請求:是指由客戶端的套接字提出連接請求,要連接的目標是服務器端的套接字。為此,客戶端的套接字必須首先面熟它要連接的服務器的套接字,指出服務器套接字的地址和端口號 , 然后就像服務器端套接字提出連接請求。

3、連接確認:是指當服務器端套接字監聽到或者說接收到客戶端套接字的連接請求,他就響應客戶端套接字的請求,建立一個新的線程,把服務器端套接字的描述發給客戶端 , 一旦客戶確認了此描述 , 連接就建立好了。而服務器端套接字繼續處于監聽狀態,繼續接收其他客戶端接字的鏈接請求。

一、測試環境:

服務器ip:xxx.xxx.xxx.1

客戶端ip: xxx.xxx.xxx.2

二 、測試過程:

客戶端服務器將在本機(xxx.xxx.xxx.1)通過socket發送數據到服務端(xxx.xxx.xxx.2)的socket服務器上,服務端收到客戶端發送的數據后返回一些給客戶端.

三、服務端文件內容:

 ?php //獲取tcp協議號嗎. $tcp = getprotobyname( tcp  //建立server端socket , 創建并返回一個套接字,也稱做一個通訊節點.一個典型的網絡連接由2個套接字構成 , 一個運行在客戶端 , 另一個運行在服務器端. $socket = socket_create(AF_INFT , SOCK_STREAM , $tcp); //綁定要監聽的ip和端口 , 這里綁定的ip一定要寫局域網ip , 寫成127.0.0.1客戶端將無法與服務器端建議連接. socket_bind($socket , xxx.xxx.xxx.1 , 10008); //監聽端口 socket_listen($socket); //初始化一個數據 , 和客戶端通信 $buffer = connect  while(true){ //接受客戶端請求過來的yigesocket連接 $connection = socket-accept($scoket); if(!connection){ echo connect faild  } else { echo Socket connected /n  //向客戶傳遞一個信息數據 if($buffer != ){ echo send data to client/n  socket_write($connection , $buffer , /n  echo Wrote to socket/n } else { echo no data in the buffer/n  //從客戶端獲取得的數據 while($data = $socket_read($connection , 1024 , PHP_NORMAL_READ)){ printf( Buffer: .$data. /n  //取得信息給客戶端一個反饋 ,Thank you client , you data is Received success發給客戶端的回應信息. socket-wirte($coennection , Thank you client , you data is Received success /n //關閉sockketsocket_close($connection);printf( Closed the socket/n ? 

四、客戶端文件內容:

 ?php //建立客戶端的socket連接 $socket = se); //連接服務器端socket $connection = socket_connect($socket , xxx.xxx.xxx.1 , 10008); //要求發送到服務端的信息. $send_data = This data will Send to server!  //客戶端去連接服務端并接受服務端返回的數據 , 如果返回的數據保護not connect就提示不能連接. while($buffer = @socket_read($socket , 1024,PHP_NORMAL_READ)){ if(preg_match( /not connect/ , $buffer)){ echo don t connect/n  break; } else { //服務端傳來的信息 echo Buffer Data: .$buffer . /n  echo Writing to Socket/n  //將客戶的信息寫道通道中 , 傳給服務器端 if(!socket_write($socket , $send_data/n )){ echo Write failed/n  //服務器端收到信息后 , 客戶端接受服務端傳給客戶端的回應信息. while($buffer = socket_read($socket , 1024 , PHP_NORMAL_READ)){ echo send to server: $send-data/n response from server was: .$buffer. /n ? 

五、在服務端socket服務啟動進程。

#/usr/local/php/bin/php -a/home/server.phpInteractive mode enable 互動模式啟動

六、服務端啟動后查看啟動的進程及端口

#netstat -tnlp |grep 10008tcp 0 0 192.168.13:10008 0.0.0.0:* LISTEN28892/php

七、在客戶端(192.168.1.2)上執行傳輸

#/usr/local/php/bin/php -a client.phpInteractive mode enabled

八、回到服務器端上查看接受到的信息。

#/usr/local/php/bin/php -a /home/server.phpInteractive mode enabledSocket connectedsend data clientWrote to socketBuffer:This data will Send to server!

相關教程:PHP視頻教程

以上就是PHP 如何進行socket套節字的連接的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洞口县| 垣曲县| 遵义县| 襄樊市| 正宁县| 墨竹工卡县| 乐山市| 宜兴市| 府谷县| 沧州市| 北辰区| 巨野县| 米易县| 安宁市| 磴口县| 东港市| 北票市| 翁源县| 贵溪市| 手游| 微博| 东至县| 新巴尔虎左旗| 襄樊市| 宜宾市| 汾阳市| 宁都县| 肥东县| 沂水县| 波密县| 南华县| 克拉玛依市| 北票市| 专栏| 道真| 辉南县| 平和县| 固安县| 阜新市| 阿巴嘎旗| 阜新市|