日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP-Socket服务端客户端发送接收通信实例详解

發布時間:2025/5/22 php 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP-Socket服务端客户端发送接收通信实例详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://fighter.blog.51cto.com/1318618/1533957

Socket介紹

什么是socket 所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。

在Internet上的主機一般運行了多個服務軟件,同時提供幾種服務。每種服務都打開一個Socket,并綁定到一個端口上,不同的端口對應于不同的服務。

Socket連接過程

根據連接啟動的方式以及本地套接字要連接的目標,套接字之間的連接過程可以分為三個步驟:服務器監聽,客戶端請求,連接確認。

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

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

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

socket百科:http://baike.baidu.com/view/13870.htm

?

1、測試環境

服務器ip:192.168.150.1

客戶端ip:192.168.150.2

2、測試過程:

客戶端服務器將在本機(192.168.150.2)通過socket發送數據到服務端(192.168.150.2)的socket服務器上,服務端接收到客戶端發送的數據后返回一些信息給客戶端。

3、服務端文件內容:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #server.php <?php? //獲取tcp協議號碼。 $tcp?=?getprotobyname("tcp");?? //?建立server端socket?,創建并返回一個套接字,也稱作一個通訊節點。一個典型的網絡連接由?2?個套接字構成,一個運行在客戶端,另一個運行在服務器端。 $socket?=?socket_create(AF_INET,?SOCK_STREAM,?$tcp);? //綁定要監聽的ip和端口,這里綁定的ip一定要寫局域網ip,寫成127.0.0.1客戶端將無法與服務端建議連接。 socket_bind($socket,?'192.168.150.1',?10008);???? ?//監聽端口???? socket_listen($socket);????? ?? //初始化一個數據,和客戶端通信? $buffer?=?"connect";? while?(true)?{? ????//?接受客戶端請求過來的一個socket連接? ????$connection?=?socket_accept($socket);? ????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_write($connection,?"Thank?you?client,?you?data?is??Received?success\n");? ????????????}? ????}? ????//關閉?socket ????socket_close($connection);? ????printf("Closed?the?socket\n");? }? ?>

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4、客戶端文件內容: client.php <?php? //?建立客戶端的socet連接? $socket?=?socket_create(AF_INET,?SOCK_STREAM,?SOL_TCP);? ??//連接服務器端socket? $connection?=?socket_connect($socket,?'192.168.150.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?"sent?to?server:$send_data\n?response?from?server?was:"?.?$buffer?.?"\n";? ????????}???????? ?? ????}? }? ?? ?>

?

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

#/usr/local/php/bin/php -a /home/server.php

Interactive mode enabled

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

#netstat -tnlp |grep 10008
tcp??????? 0????? 0 192.168.150.13:10008??????? 0.0.0.0:*?????????????????? LISTEN????? 28892/php?

?

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

#/usr/local/php/bin/php -a ?client.php?

Interactive mode enabled

Buffer Data:?connect

Writing to Socket

sent to server:This data will Send to server!

?response from server was:Thank you client, you data Information Received

?

8、回到服務端上查看接收到的信息。

#/usr/local/php/bin/php -a /home/server.php

Interactive mode enabled

Socket connected
send data to client
Wrote to socket
Buffer:?This data will Send to server!

?

9、參考資料

socket_create()函數需要三個參數:一個協議、一個socket類型、一個公共協議。socket_create()函數運行成功返回一個包含socket的資源類型,如果沒有成功則返回false。

Socket函數
函數名????? 描述
socket_accept()??? 接受一個Socket連接
socket_bind()???? 把socket綁定在一個IP地址和端口上
socket_close()???? 關閉一個socket資源
socket_connect()??? 開始一個socket連接
socket_create()??? 產生一個socket,相當于產生一個socket的數據結構
socket_listen()???? 監聽由指定socket的所有連接
socket_read()???? 讀取指定長度的數據
socket_readv()???? 讀取從分散/聚合數組過來的數據
socket_send()???? 這個函數發送數據到已連接的socket
socket_write()???? 寫數據到socket緩存
socket_writev()??? 寫數據到分散/聚合數組

?

參考文檔:http://blog.51yip.com/php/673.html

轉載于:https://www.cnblogs.com/caicaizi/p/7844803.html

總結

以上是生活随笔為你收集整理的PHP-Socket服务端客户端发送接收通信实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲理论片 | 另类视频在线观看+1080p | 97在线精品视频 | 午夜日韩视频 | 五十路在线视频 | 欧美视频一二三区 | 国产一区二区三区观看 | 91视频最新 | 中文字幕第三页 | 国产系列精品av | 色窝| 91久久久久国产一区二区 | 国模吧一区二区三区 | 噜噜色成人 | 日韩免费av在线 | 日韩欧美无 | 免费观看黄色一级片 | 午夜精品久久久久久99热 | av有码在线观看 | 亚洲福利视频一区 | 丰满少妇乱子伦精品看片 | 综合视频| www在线看| 正在播放木下凛凛xv99 | 成人先锋av| 日韩精品视频久久 | 色婷婷电影网 | 日韩日日夜夜 | 26uuu欧美日本| 日产精品久久久久久久 | 婷婷色视频 | 久久国内精品视频 | 国产尤物在线视频 | 黄色一级免费 | 欧美视频在线一区二区三区 | 国产精品爽爽 | 91精品国产综合久久福利软件 | 天天摸天天碰 | 王者后宫yin肉h文催眠 | 妺妺窝人体色www聚色窝仙踪 | 日韩精品第1页 | 国产吞精囗交免费视频网站 | 欧美大片免费在线观看 | 视频区图片区小说区 | 国产一区二区视频在线 | 逼特逼视频在线观看 | 韩国一区二区三区视频 | 自拍色图| 国产日韩精品电影 | 噼里啪啦国语电影 | 日本欧美久久久 | av免费网站在线观看 | 成人午夜视频在线免费观看 | 黄色免费观看网站 | 噜噜噜亚洲色成人网站 | 成人黄色大全 | 久久久国产精品久久久 | www.日韩在线 | 中文字幕亚洲在线 | 中文字幕日韩欧美一区二区 | 国内av片| 国产视频第一区 | 日日操操| 一区二区三区精彩视频 | 欧美又粗又长 | 日韩专区中文字幕 | 中文av网| 亚洲久久视频 | 亚洲成人激情视频 | 在线看片网址 | 亚洲不卡影院 | 欧美三级一级片 | 性欢交69国产精品 | 人人爽人人爽人人片av | 992av| 丰满少妇xbxb毛片日本 | 久久久久久av无码免费看大片 | 欧美在线xxxx | 一本色道久久综合无码人妻 | 夜夜撸网站 | 一级黄色性生活视频 | 欧美黄色大片网站 | 真实的国产乱xxxx在线91 | 欧美综合亚洲图片综合区 | 丝袜美腿亚洲综合 | 国产欧美亚洲精品 | 伊人久久中文字幕 | 依人在线视频 | 亚洲日本不卡 | 国产免费黄色av | 懂色av粉嫩av蜜乳av | 国产黄色一级片 | 欧美爱爱一区二区 | 欧美视频在线一区二区三区 | 韩国女主播裸体摇奶 | 琪琪成人| 黄页网站免费观看 | 欧美丰满熟妇bbb久久久 | 久久久精品人妻一区二区三区色秀 |