新蒲京200.c软件下载-app官网网址 > 文章 >

付费投稿安插

本文由码农网 – 小峰原创翻译,转发请看清文末的转发须要,招待加入大家的付费投稿布置!

介绍

Socket用于进度间通讯。进度间通讯平日依照客户端—服务端模型。这时,客商端—服务端是足以大同小异的应用程序。客户端和服务端之间的互相要求连接。Socket编制程序负担的就是为应用程序之间创建可进展交互作用的三番一次。

在本文中,大家将学习怎么用PHP创制二个轻便易行的顾客端—服务端。大家还将学习怎样客商端应用程序如何发送消息到服务端,以至怎么样从服务端接受音讯。

图片 1

动用代码

目标:开辟叁个客商端用于发送string音讯到服务端,服务端将一律的音信反转后回到给客商端。

PHP服务器

第1步:设置变量,如“主机”和“端口”

$host = "127.0.0.1";
$port = 5353;
// No Timeout 
set_time_limit(0);

端口号能够是1024 -65535之间的任何正整数。

第2步:创建socket

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");

第3步:绑定socket到端口和主机

开创的socket能源绑定到IP地址和端口号。

$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");

第4步:启动socket监听

在绑定到IP和端口后,服务端带头等待客商端的连年。在向来不连接在此之前它就间接等下去。

$result = socket_listen($socket, 3) or die("Could not set up socket listenern");

第5步:选拔连接

其一函数会选拔所建的socket传入的总是诉求。在承当来自顾客端socket的接连后,该函数再次来到另多个socket财富,实际上就是承受与相应的顾客端socket通讯。这里的“$spawn”正是承当与客商端socket通讯的socket能源。

$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");

到近期终止,大家早已考虑好了劳务端socket ,但实际上那些本子并没有做别的专业。所感到了世袭实现上述指标,大家将读取客商端socket信息,然后将收到到的音信反转后发回给顾客端socket。

第6步:从客商端socket读取音讯

$input = socket_read($spawn, 1024) or die("Could not read inputn");

第7步:反转音信

$output = strrev($input) . "n";

第8步:发送消息给客商端socket

socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");

关闭socket

socket_close($spawn);
socket_close($socket);

那就完事了服务端。现在,我们上学怎样创建PHP顾客端。

PHP客户端

前三个步骤与服务端形似。

第1步:设置变量,如“主机”和“端口”

$host = "127.0.0.1";
$port = 5353;
// No Timeout 
set_time_limit(0);

注:这里的端口和主机应该和服务端中的定义是一模二样的。

第2步:创建socket

$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");

第3步:连接到服务端

$result = socket_connect($socket, $host, $port) or die("Could not connect toservern");

这时候和服务端差异,客户端socket不绑定端口和主机。相反,它总是到劳动端socket,等待选用来自客商端socket的接连。这一步建构了客户端socket到劳动端socket的连接。

第4步:写入服务端socket

socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");

在这里步骤中,客商端socket的数量被发送到服务端socket。

第5步:阅读来自服务端的响应

$result = socket_read ($socket, 1024) or die("Could not read server responsen");
echo "Reply From Server  :".$result;

第6步:关闭socket

socket_close($socket);

完全的代码

服务端(server.php)

// set some variables
$host = "127.0.0.1";
$port = 25003;
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socketn");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listenern");

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connectionn");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read inputn");
// clean up input string
$input = trim($input);
echo "Client Message : ".$input;
// reverse client input and send back
$output = strrev($input) . "n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write outputn");
// close sockets
socket_close($spawn);
socket_close($socket);

客户端(client.php)

$host    = "127.0.0.1";
$port    = 25003;
$message = "Hello Server";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socketn");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to servern");  
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to servern");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server responsen");
echo "Reply From Server  :".$result;
// close socket
socket_close($socket);

确立上述文件(server.php和client.php)后,推行如下操作:

  1. 复制www目录中的那个文件(若是WAMP),安放于C:wamp。
  2. 开采Web浏览器,在地方栏中键入localhost 。
  3. 先浏览server.php然后client.php。

许可证

那篇文章,以致此外有关的源代码和文件,是透过The Code Project Open License (CPOL卡塔尔(قطر‎许可的。

下一篇:没有了