首页 > 开发 > PHP > 正文

php简单socket服务器客户端代码实例

2024-05-04 22:36:58
字体:
来源:转载
供稿:网友

本篇文章分享一个简单的socket示例,用php。实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务。

产生一个 socket 服务端

<?php/*文件名:socket_server.php*/// 设置一些基本的变量$host="127.0.0.1";//Socket运行的服务器的IP地址$port=1234;//Socket运行的服务器的端口,端口取值为1到65535之间的数字,前提是这个端口未被使用// 设置超时时间,这里设置为永不超时,确保PHP在等待客户端连接时不会超时。set_time_limit(0);// 创建一个Socket,返回一个Socket句柄$socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket/n");//绑定Socket到指定的地址和端口$result=socket_bind($socket,$host,$port) or die("Could not bind to socket/n");// 开始监听外部连接$result=socket_listen($socket,3) or die("Could not set up socket listener/n");/******到这里,服务器除了等待来自客户端的连接请求外基本上什么也不做******/// 另一个Socket来处理服务端与客户端的通信$spawn=socket_accept($socket) or die("Could not accept incoming connection/n");// 读取客户端的输入,当一个连接被建立后,服务器就会等待客户端发送一些输入信息,这些信息可以由socket_read()函数来获得,并把它赋值给PHP的$input变量$input=socket_read($spawn,1024) or die("Could not read input/n");//socker_read的第二个参数用以指定读入的字节数,你可以通过它来限制从客户端获取数据的大小// 下面这不就不解释了,不知道的自己面壁去$input=trim($input);//处理客户端输入并返回结果,当客户端发来数据信息后,信息输出就要靠socket_write()函数来完成$output=strrev($input) ."/n";//反转字符串,这里仅仅是为了更好的区分两条信息socket_write($spawn,$output,strlen($output)) or die("Could not write output/n");// 关闭socketssocket_close($spawn);socket_close($socket);

提示:你应该使用你的命令提示符来运行上面这段代码。理由是因为这里将产生一个服务器,而不是一个Web页面。如果你尝试使用Web浏览器来运行这个脚本,那么很有可能它会超过30秒的限时。你可以使用下面的代码来设置一个无限的运行时间,但是还是建议使用命令提示符来运行。
代码如下:
set_time_limit(0);

在你的命令提示符中对这个脚本进行简单测试:
代码如下:
Php.exe socket_server.php

如果你没有在系统的环境变量中设置php解释器的路径,那么你将需要给php.exe指定详细的路径。当你运行这个服务器端的时候,你能够通过远程登陆(telnet)的方式连接到端口1337来测试这个服务器。

上面的服务器端有三个问题:

1. 它不能接受多个连接。

2. 它只完成唯一的一个命令。

3. 你不能通过Web浏览器连接这个服务器。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表