php 实现socket 客户端,PHP简单实现客户端和服务端Socket通信

本篇文章将给大家介绍PHP简单实现客户端和服务端Socket通信的过程

本文用到的socket方法。

85a168da69a5abcf74c88d36ee9dd379.png

socket服务端实现代码server.php

/**

* Created by PhpStorm.

* User: jmsite.cn

* Date: 2019/2/20

* Time: 11:59

*/

set_time_limit(0);

$host = '127.0.0.1';

$port = 8081;

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("socket_create() 失败:".socket_strerror(socket_last_error())."\n");

$ret = socket_bind($socket,$host,$port) or die("socket_bind() 失败:".socket_strerror(socket_last_error())."\n");

$ret = socket_listen($socket,10) or die("socket_listen() 失败:".socket_strerror(socket_last_error())."\n");

while (true){

$connection = socket_accept($socket) or die("socket_accept() 失败:".socket_strerror(socket_last_error())."\n");

while (true){

socket_getpeername($connection, $addr, $port);

$data = socket_read($connection, 4096);

if (!$data){

break;

}

$msg = date("Y-m-d H:i:s")." {$addr} {$port} 已收到信息(".$data.")";

echo $msg."\n";

socket_write($connection, $msg, strlen($msg));

}

}

socket客户端实现代码client.php

/**

* Created by PhpStorm.

* User: jmsite.cn

* Date: 2019/2/20

* Time: 12:22

*/

$host = '127.0.0.1';

$port = 8081;

$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or die("socket_create() 失败:".socket_strerror(socket_last_error())."\n");

$ret = socket_connect($socket, $host, $port) or die("socket_connect() 失败:".socket_strerror(socket_last_error())."\n");

$msg = "测试发送信息,pid:".getmypid();

socket_write($socket, $msg, strlen($msg));

$data = socket_read($socket, 4096);

echo "server回复:".$data."\n";

socket_close($socket);

测试socket通信

执行服务端代码,阻塞等待客户端连接

php server.php

多次执行客户端代码

php client.php

server回复:2019-02-20 10:14:33 127.0.0.1 64238 已收到信息(测试发送信息,pid:1532)

php client.php

server回复:2019-02-20 10:14:34 127.0.0.1 64242 已收到信息(测试发送信息,pid:11620)

php client.php

server回复:2019-02-20 10:14:35 127.0.0.1 64243 已收到信息(测试发送信息,pid:3676)

php client.php

server回复:2019-02-20 10:14:36 127.0.0.1 64246 已收到信息(测试发送信息,pid:19740)

php client.php

server回复:2019-02-20 10:14:37 127.0.0.1 64249 已收到信息(测试发送信息,pid:23180)

......

server.php输出

php server.php

2019-02-20 10:14:33 127.0.0.1 64238 已收到信息(测试发送信息,pid:1532)

2019-02-20 10:14:34 127.0.0.1 64242 已收到信息(测试发送信息,pid:11620)

2019-02-20 10:14:35 127.0.0.1 64243 已收到信息(测试发送信息,pid:3676)

2019-02-20 10:14:36 127.0.0.1 64246 已收到信息(测试发送信息,pid:19740)

2019-02-20 10:14:37 127.0.0.1 64249 已收到信息(测试发送信息,pid:23180)

......

这就是PHP简单实现客户端和服务端Socket通信的过程。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值