PHP 示例:php socket(fsockopen)的应用实例分
析
本文是对 php socket(
fsockopen
)的应用实例进行了详细的分析介绍,供大家参考下
fsockopen
函数能够运用,首先要开启 php.ini 中的 allow_url_open=on;
fsockopen
是对 socket 客户端代码的封装,该函数中封装了 socket_create,socket_connect。
服务器端代码:server.php
代码如下:
<?php
error_reporting
(E_ALL);
set_time_limit(0);
$address
= '127.0.0.1';
$port
= 10008;
//创建端口
if
((
$sock
= socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo
"socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}
//绑定
if
(socket_bind(
$sock
,
$address
,
$port
) === false) {
echo
"socket_bind() failed :reason:" . socket_strerror(socket_last_error(
$sock
)) . "\n";
}
//监听
if
(socket_listen(
$sock
, 5) === false) {
echo
"socket_bind() failed :reason:" . socket_strerror(socket_last_error(
$sock
)) . "\n";
}
while
(true) {
//得到一个链接
if
((
$msgsock
= socket_accept(
$sock
)) === false) {
echo
"socket_accepty() failed :reason:".socket_strerror(socket_last_error(
$sock
)) . "\n";
break
;
}
//welcome 发送到客户端
$msg
= "1.<font color='red'>server send:welcome</font><br/>";
socket_write(
$msgsock
,
$msg
,
strlen
(
$msg
));
//返回信息给客户端
echo
'read client message\n';
$buf
= socket_read(
$msgsock
, 8192);
//获取客户端发送过来的信息
$talkback
= "2.received message:$buf\n";
echo
$talkback
;