您好,检查您自己的代码,测试使用PHP5.6写了一个demo模拟测试是可以正常使用的。
以下是服务器端测试代码:- <?php
- /**
- * 服务端 server
- * User:
- * Date: 2019/5/29
- */
- header("Content-type: text/html; charset=utf-8"); //编码
- //获取tcp协议号码。
- $tcp = getprotobyname("tcp");
- // 建立server端socket ,创建并返回一个套接字,也称作一个通讯节点。一个典型的网络连接由 2 个套接字构成,一个运行在客户端,另一个运行在服务器端。
- $socket = socket_create(AF_INET, SOCK_STREAM, $tcp);
- //绑定要监听的ip和端口。
- //可以使用局域网ip 如果是本地的可以使用127.0.0.1
- socket_bind($socket, '127.0.0.1', 10001);
- //监听端口
- socket_listen($socket);
- //初始化一个数据,和客户端通信
- $buffer = "传输给客户端的数据";
- 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");
- //取得信息给客户端一个反馈, 发给客户端的回应信息。
- socket_write($connection, "服务端已成功接收到消息\n");
- }
- }
- //关闭 socket
- socket_close($connection);
- printf("Closed the socket\n");
- echo "----------------------------------------------\n";
- }
复制代码 demo的客户端代码:- <?php
- /**
- * 客户端代码
- * User:
- * Date: 2019/5/29
- */
- header("Content-type: text/html; charset=utf-8"); //编码
- // 建立客户端的socket连接
- $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
- //连接服务器端socket
- $connection = socket_connect($socket, '127.0.0.1', 10001);
- //要发送到服务端的信息。
- $send_data = "你好,我是客户端!";
- //客户端去连接服务端并接受服务端返回的数据,如果返回的数据保护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 . "\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_data\n接收的反馈:" . $buffer . "\n";
- }
- }
- }
- ?>
复制代码
|