点击蓝字关注我们!每天获取最新的编程小知识!
源 / php中文网 源 / www.php.cn
本篇文章将给大家介绍PHP简单实现客户端和服务端Socket通信的过程
本文用到的socket方法。
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通信的过程。
-END-
声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!
▼