一开始对socket不太理解,做起东西很模糊,后来做过定位请求的项目,对socket的理解更清楚了。
贴一下示例代码:
SERVER端
<?php
//确保在连接客户端时不会超时
set_time_limit
(0
);
//设置IP和端口号
$address
=
'127.0.0.1'
;
$port
=
2009
; //调试的时候,可以多换端口来测试程序!
//创建一个SOCKET
if
(($sock
=
socket_create
(AF_INET
,
SOCK_STREAM
,
SOL_TCP
))<
0
)
{
echo
"socket_create() 失败的原因是:"
.
socket_strerror
($sock
).
"<br>"
;
}
//绑定到socket端口
if
(($ret
=
socket_bind
($sock
,
$address
,
$port
))<
0
)
{
echo
"socket_bind() 失败的原因是:"
.
socket_strerror
($ret
).
"<br>"
;
}
//开始监听
if
(($ret
=
socket_listen
($sock
,
4
))<
0
)
{
echo
"socket_listen() 失败的原因是:"
.
socket_strerror
($ret
).
"<br>"
;
}
do
{
if
(($msgsock
=
socket_accept
($sock
)) <
0
)
{
echo
"socket_accept() failed: reason: "
.
socket_strerror
($msgsock
) .
"
\n
"
;
break
;
}
//发到客户端
$msg
=
"<font color=red>欢迎进入服务器!</font><br>"
;
socket_write
($msgsock
,
$msg
,
strlen
($msg
));
echo
"读取客户端发来的信息<br>"
;
$buf
=
socket_read
($msgsock
,
8192
);
$talkback
=
"收到的信息:
$buf
<br>"
;
echo
$talkback
;
/* if(socket_write($msgsock, $talkback, strlen($talkback))<0)
{
echo "socket_write() failed: reason: " . socket_strerror($msgsock) . "\n";
}
else
{
echo "发送成功";
}*/
//echo $buf;
socket_close
($msgsock
);
}
while
(true
);
socket_close
($sock
);
?>
CLIENT端
<?php
error_reporting
(E_ALL
);
set_time_limit
(0
);
echo
"<h2>TCP/IP Connection</h2>
\n
"
;
$service_port
=
2009
;
$address
=
"127.0.0.1"
;
$socket
=
socket_create
(AF_INET
,
SOCK_STREAM
,
SOL_TCP
);
if
($socket
<
0
)
{
echo
"socket_create() failed: reason: "
.
socket_strerror
($socket
) .
"
\n
"
;
}
else
{
echo
"OK.
\n
"
;
}
echo
"试图连接 '
$address
' 端口 '
$service_port
'...<br>"
;
$result
=
socket_connect
($socket
,
$address
,
$service_port
);
if
($result
<
0
)
{
echo
"socket_connect() failed.
\n
Reason: (
$result
) "
.
socket_strerror
($result
) .
"
\n
"
;
}
else
{
echo
"连接OK<br>"
;
}
$in
=
"Hello
\r\n
"
;
$in
.=
"我是Chester
\r\n
"
;
$out
=
''
;
$out1
=
''
;
if
(!
socket_write
($socket
,
$in
,
strlen
($in
)))
{
echo
"socket_write() failed: reason: "
.
socket_strerror
($socket
) .
"
\n
"
;
}
else
{
echo
"发送到服务器信息成功!<br>"
;
echo
"发送的内容为:<font color='red'>
$in
</font> <br>"
;
}
while
($out
=
socket_read
($socket
,
8192
))
{
echo
"接收服务器回传信息成功!<br>"
;
echo
"接受的内容为:"
,
$out
;
}
echo
"关闭SOCKET...<br>"
;
socket_close
($socket
);
echo
"关闭OK<br>"
;
?>
先运行server.php
再运行client.php
分享到:
相关推荐
server/client通信实例 博文链接:https://purpen.iteye.com/blog/770712
第10章 使用Socket编程 10.1 Socket基础 10.2 Socket功能函数 10.3 一个简单的TCP/IP服务器端和客户端实例讲解 10.4 本章小结 第11章 用户登录注册模块 11.1 数据库设计 11.2 最基本的注册模块 11.2.1 页面效果 ...
主要介绍了php使用socket编程的示例,大家参考使用吧
主要介绍了深入浅出php socket编程,本文详细的讲解了socket的相关知识、PHP socket的编程实例行装内容,需要的朋友可以参考下
fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。服务器端代码:server.php复制代码 代码如下:<?phperror_reporting(E_ALL);set_time_limit(0);$address = ‘127.0.0.1’;$...
本文实例讲述了PHP向socket服务器收发数据的方法。分享给大家供大家参考。具体如下: 在PHP要向其它程序发送数据,则需要使用到php的socket功能来实例了,下面我们简单看一个实例,代码如下: 复制代码 代码如下:/*...
在这一章里你将了解到迷人而又让人容易糊涂的套接字...◆ Socket 基础PHP使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话
本文实例讲述了php socket通信(tcp/udp)方法。分享给大家供大家参考,具体如下: 注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.php后台跑起来的时候nohup php server.php > /var/tmp/a.log ...
实例013 Linux下实现PHP支持Socket 20 实例014 Linux下实现PHP支持mysqli扩展技术 21 实例015 开机自动启动Apache服务 21 实例016 开机自动启动MySQL服务 22 实例017 Linux下发布“读者之家”网站 22 1.3...
作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步。最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅。希望分享给大家。本文需要有一定http基础的开发者阅读。 ...
本文实例讲述了PHP基于socket实现的简单客户端和服务端通讯功能。分享给大家供大家参考,具体如下: 服务器端: <?php set_time_limit(0); $host=localhost; $port=1001; //创建一个连接 $socket=socket_...
很多程序以服务形式存在,他没有终端或UI交互,它可能采用其他方式与其他程序交互,如TCP/UDP Socket, UNIX Socket, fifo。程序一旦启动便进入后台,直到满足条件他便开始处理任务。 3.何时采用守护进程开发应用程序...
一、server.php服务端: <?php error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush();...//创建SOCKET ... echo "socket创建失败原因 " . socket_strerror($sock) . "\n"; } if (($ret = so
在使用这些方向的时候,我们可以使用到PHP的更多特性,例如并发(多进程)、socket编程等。 那么接下来就说说我遇到的PHP多进程的编程。这个多进程的使用是有一个背景的,下面模糊描述一下背景。 我需要一个监控系统...
在linux下给PHP安装socket扩展,参考方法如下: #cd /usr/soft/php/ext/sockets (进入原php安装文件下的sockets目录) #/usr/local/php/bin/phpize (运行安装后的php安装文件下的phpize) #./configure –prefix=/usr/...
:construction: Kotlin插座-Redis适配器该库使您可以从kotlin后端通过socket.io轻松发布通知。 目前正在建设中,尚未... 该设置包含一个Redis实例,一个Java发布者,三个socket.io-servers和三个使用中的socket.io-cli
本文实例讲述了PHP编程实现的TCP服务端和客户端功能。分享给大家供大家参考,具体如下: 1、修改php.ini,打开extension=php_sockets.dll 2、服务端程序SocketServer.php <?php //确保在连接客户端时不会超时 ...
xmlrpc实现php和后台c 的通信 这里提供了一个开源的xmlrpc的包,可以实现php和c 的通信,提供多线程编程接口,省去了自己写socket的麻烦。 代码中包含一个实例:client端是php的,server端的c 的。
本文实例讲述了php实现TCP端口检测的方法。分享给大家供大家参考。具体如下: 该程序可以确认当前端口是否可用: <?php class Health { public static $status; public function __construct() { } public ...
主要介绍了php实现的ping端口函数,以实例形式较为详细的分析了PHP使用socket编程的技巧,需要的朋友可以参考下