问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

PHPSocket编程过程

发布网友 发布时间:2024-07-03 04:47

我来回答

1个回答

热心网友 时间:2024-07-09 03:39

PHP,Socket编程过程很多人还不知道,现在让我们一起来看看吧!
PHP Socket编程过程
  Socket用于进程间通信,进程间通信通常基于客户端—服务端模型。此时,客户端—服务端是可以彼此交互的应用程序。客户端和服务端之间的交互需要连接。Socket编程负责的就是为应用程序之间建立可进行交互的连接。下面为大家介绍一下PHP Socket编程过程!
  使用代码
  目的':开发一个客户端用于发送string消息到服务端,服务端将相同的信息反转后返回给客户端。
  PHP服务器
  第1步:设置变量,如“主机”和“端口”
  $host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
  端口号可以是1024 -65535之间的任何正整数。
  第2步:创建socket
  $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
  第3步:绑定socket到端口和主机
  创建的socket资源绑定到IP地址和端口号。
  $result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");
  第4步:启动socket监听
  在绑定到IP和端口后,服务端开始等待客户端的连接。在没有连接之前它就一直等下去。
  $result = socket_listen($socket, 3) or die("Could not set up socket listenern");
  第5步:接受连接
  这个函数会接受所建的socket传入的连接请求。在接受来自客户端socket的连接后,该函数返回另一个socket资源,实际上就是负责与相应的客户端socket通信。这里的“$spawn”就是负责与客户端socket通信的socket资源。
  $spawn = socket_accept($socket) or die("Could not accept incoming connectionn");
  到现在为止,我们已经准备好了服务端socket ,但实际上这个脚本并没有做任何事情。所以为了继续完成上述目标,我们将读取客户端socket消息,然后将接收到的消息反转后发回给客户端socket。
  第6步:从客户端socket读取消息
  $input = socket_read($spawn, 1024) or die("Could not read inputn");
  第7步:反转消息
  $output = strrev($input) . "n";
  第8步:发送消息给客户端socket
  socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");
  关闭socket
  socket_close($spawn);socket_close($socket);
  这就完成了服务端。现在,我们学习如何创建PHP客户端。
  PHP客户端
  前两个步骤与服务端相同。
  第1步:设置变量,如“主机”和“端口”
  $host = "127.0.0.1";$port = 5353;// No Timeout set_time_limit(0);
  注:这里的端口和主机应该和服务端中的定义是相同的。
  第2步:创建socket
  $socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
  第3步:连接到服务端
  $result = socket_connect($socket, $host, $port) or die("Could not connect toservern");
  此时和服务端不同,客户端socket不绑定端口和主机。相反,它连接到服务端socket,等待接受来自客户端socket的连接。这一步建立了客户端socket到服务端socket的连接。
  第4步:写入服务端socket
  socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
  在此步骤中,客户端socket的数据被发送到服务端socket。
  第5步:阅读来自服务端的响应
  $result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;
  第6步:关闭socket
  socket_close($socket);
  完整的代码
  服务端(server.php)
  // set some variables$host = "127.0.0.1";$port = 25003;// don't timeout!set_time_limit(0);// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// bind socket to port$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");// start listening for connections$result = socket_listen($socket, 3) or die("Could not set up socket listenern");// accept incoming connections// spawn another socket to handle communication$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");// read client input$input = socket_read($spawn, 1024) or die("Could not read inputn");// clean up input string$input = trim($input);echo "Client Message : ".$input;// reverse client input and send back$output = strrev($input) . "n";socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");// close socketssocket_close($spawn);socket_close($socket);
  客户端(client.php)
  $host = "127.0.0.1";$port = 25003;$message = "Hello Server";echo "Message To server :".$message;// create socket$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");// connect to server$result = socket_connect($socket, $host, $port) or die("Could not connect to servern"); // send string to serversocket_write($socket, $message, strlen($message)) or die("Could not send data to servern");// get server response$result = socket_read ($socket, 1024) or die("Could not read server responsen");echo "Reply From Server :".$result;// close socketsocket_close($socket);
  建立上述文件(server.php和client.php)后,执行如下操作:
  复制www目录中的这些文件(假设WAMP),安置于C:wamp。
  打开Web浏览器,在地址栏中键入localhost 。
  先浏览server.php然后client.php。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
收到别单位给的承兑汇票 我单位在给别的单位 这笔业务应该怎么做啊? 荔枝什么生肖 均衡器怎样调成重低音 电脑eq设置低音电脑EQ均衡器怎么设置达到最佳音效 第一排是什么单词 人生中的黑暗乐章——Agust 乐评 Sigur Ros乐队简介 ...在这部影片里面名字叫Agust还是什么的、求名字 请大大们给个英文名 大叶芹叶子可以吃吗 ...就是"一拜天地..."後面的一堆话,求助,急用! ...男方不入赘,双方父母都要办婚礼,可以拜两次堂吗,应该要怎么办... 忻州科三还能包过吗 如何养罗汉鱼 罗汉鱼饲养方法 小提琴松香哪个牌子好 二胡松香是越贵越好吗? 红茶和绿茶可以一起喝吗?喝红茶的好处和坏处 红茶和绿茶能一起喝吗,绿茶和红茶一起喝会怎么样? 红茶绿茶一起喝行吗,红茶能不能和绿茶一起喝呢 房子阴暗潮湿,墙壁上都是小水珠,被子都感觉湿湿的很不舒服怎么办?_百... 50管道每小时的流量是多少立方米水? 【常用】2023世界艾滋病日活动总结及反思 香港一42层在建大楼发生严重火灾 有人员伤亡吗? 香港中旅大厦工程概况 求一片恐怖电影 空调制热多少度最省电啊? 空调制热哪个模式省电? 抖音上的彩虹加上去的方法抖音上的彩虹如何加上去 信息系统的关键要素 事业单位综合应用能力提前一个小时交卷能考好吗 Socket从什么时候开始监听客户请求() 能够提高文笔的古诗词有哪些? 本人文笔不行,望各位帮帮忙,写有关‘陈遥’的诗词 鼻头上老是有黑头,有什么方法可以去掉? 怎么去除鼻头上的黑头 黑之契约者中李舜生是怎么样的一个人 改装氛围灯4s店和改装店有啥区别? 华硕p8h61mlx3华硕p8h61mlx3plusr20 跑题作文扣几分啊? 列车mr bp是什么意思? 山东乐悠悠花生油科技有限公司怎么样 沙坪坝807几点收班? 前端开发语言有哪些 本田冠道新款2022款报价及图片(本田冠道2022款最低配值得买吗)_百度知 ... 关于梦想的四字词 变道和减速慢行手势区别 慢行的交通标志 宿舍有宝贝是什么意思呀 大学宿舍里能不能带那些神奇宝贝 宝贝分类 宿舍生活的关键词有那些 如图所示
  • 焦点

最新推荐

猜你喜欢

热门推荐