iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP Socket编程过程的详细介绍
  • 548
分享到

PHP Socket编程过程的详细介绍

2023-06-17 06:06:14 548人浏览 独家记忆
摘要

本篇内容主要讲解“PHP Socket编程过程的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php Socket编程过程的详细介绍”吧!介绍Socket用于进程间通信。进程间通信通常基

本篇内容主要讲解“PHP Socket编程过程的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习php Socket编程过程的详细介绍”吧!

介绍

Socket用于进程间通信。进程间通信通常基于客户端—服务端模型。此时,客户端—服务端是可以彼此交互的应用程序。客户端和服务端之间的交互需要连接。Socket编程负责的就是为应用程序之间建立可进行交互的连接。

在本文中,我们将学习如何用PHP创建一个简单的客户端—服务端。我们还将学习如何客户端应用程序如何发送消息到服务端,以及如何从服务端接受消息。

使用代码

目的:开发一个客户端用于发送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 socket\n");

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

创建的socket资源绑定到IP地址和端口号。

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

第4步:启动socket监听

在绑定到IP和端口后,服务端开始等待客户端的连接。在没有连接之前它就一直等下去。

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

第5步:接受连接

这个函数会接受所建的socket传入的连接请求。在接受来自客户端socket的连接后,该函数返回另一个socket资源,实际上就是负责与相应的客户端socket通信。这里的“$spawn”就是负责与客户端socket通信的socket资源。

$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");

到现在为止,我们已经准备好了服务端socket ,但实际上这个脚本并没有做任何事情。所以为了继续完成上述目标,我们将读取客户端socket消息,然后将接收到的消息反转后发回给客户端socket。

第6步:从客户端socket读取消息

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

反转消息

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

发送消息给客户端socket

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

关闭socket

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

这就完成了服务端。现在,我们学习如何创建PHP客户端。

PHP客户端

前两个步骤与服务端相同。

设置变量,如“主机”和“端口”

$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 socket\n");

连接到服务端

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

此时和服务端不同,客户端socket不绑定端口和主机。相反,它连接到服务端socket,等待接受来自客户端socket的连接。这一步建立了客户端socket到服务端socket的连接。

第4步:写入服务端socket

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

在此步骤中,客户端socket的数据被发送到服务端socket。

阅读来自服务端的响应

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

关闭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 socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket listener\n");

// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// 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 output\n");
// 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 socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n"); 
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
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。

到此,相信大家对“PHP Socket编程过程的详细介绍”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: PHP Socket编程过程的详细介绍

本文链接: https://www.lsjlt.com/news/287462.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP Socket编程过程的详细介绍
    本篇内容主要讲解“PHP Socket编程过程的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP Socket编程过程的详细介绍”吧!介绍Socket用于进程间通信。进程间通信通常基...
    99+
    2023-06-17
  • 详细介绍Golang的编译过程
    Golang 是 Google 开发的一种编程语言,自推出以来备受欢迎。多人协作、高并发、低延迟的特性,使得 Golang 非常适合用于互联网高流量服务端的开发。但是,作为一名 Golang 工程师,您是否对编译过程有所疑虑?本文将详细介绍...
    99+
    2023-05-14
  • 详细介绍Golang编译的过程及其原理
    Golang是一种新的编程语言,十分快速的发展,得到越来越多开发者的关注和使用。Golang除了拥有诸如并发编程、垃圾回收、强类型等自身特性外,还具有编译速度快、能生成单独静态链接的可执行文件等优势。但是,Golang的编译过程却不简单。在...
    99+
    2023-05-14
  • linux网络编程socket的介绍
    这篇文章主要讲解了“linux网络编程socket的介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux网络编程socket的介绍”吧!一.概念介绍网络程序分为服务端程序和客户端程序...
    99+
    2023-06-13
  • Java 函数编程详细介绍
    目录一、函数编程Lambda1、接口二、Java函数接口1、Predicate2、Consumer3、Function4、Supplier三、类型检查1、Capturing Lamb...
    99+
    2024-04-02
  • Python编程语言详细介绍
    目录一、语法1、缩进2、变量3、表达式4、类型5、方法二、 库1、Python的应用3、值得学习Python吗? 前言: Python是世界上最流行的解释型编程语言之一。Python...
    99+
    2024-04-02
  • 详细介绍VB编程中的数组
    在VB(Visual Basic)编程中,数组是一种特殊类型的变量,它用于存储多个相同类型的值。数组可以包含任意数量的元素,这些元素...
    99+
    2023-09-23
    VB
  • PythonSocket编程知识点详细介绍
    目录一、导入Socket模块二、Socket基本用法1.建立一个简单的Socket连接2.协议对应端口3.Socket函数4.套接字函数5.一个简单的客户端与服务端交互三、总结前言:...
    99+
    2024-04-02
  • socket编程的详细讲解
    目录1:socket大致介绍2:TCP/IP协议3:回过头再来理解socket4:socket的一些接口函数原理5:socket的一个例子,总结上述的问题6:上面例子用到的知识点7:...
    99+
    2024-04-02
  • Kotlin函数式编程超详细介绍
    目录1.函数式编程2.函数类别3.变换函数(transform)4.过滤函数(filter)5.合并函数(combine)1.函数式编程 我们都知道java是面向对象编程范式。在ja...
    99+
    2024-04-02
  • 详细介绍GitLab的安装和配置过程
    在当今的软件开发领域,版本控制是一项非常重要的工作,而Git是这个领域中最为流行的版本控制系统之一。但是,为了更好地管理自己的项目,还需要搭建一套Git服务器来进行代码的提交和管理。其中,GitLab就是一个极好的选择。本文将详细介绍Git...
    99+
    2023-10-22
  • 详细介绍windows系统下创建进程、线程的过程
    进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个...
    99+
    2023-06-02
    windows 创建进程 线程 过程 系统 进程
  • MyBatis详细执行流程的介绍
    本篇内容介绍了“MyBatis详细执行流程的介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis简介MyBatis 是一款优秀的...
    99+
    2023-06-14
  • oracle11g 最终版本11.2.0.4安装详细过程介绍
     --安装背景 上次碰到问题,cursor:mutex S导致的load过高, 有说可以升级到11.2.0.4就能避免这种问题,所以准备重新搭建新版本11.2.0.4。 安装环境是:az...
    99+
    2024-04-02
  • python流程控制详细介绍
    目录1. 布尔逻辑1.1 条件控制语句-if1.2 if/else 语句1.3 if/elif 语句2 循环控制语句2.1 循环控制之for2.2 循环控制之while3 for v...
    99+
    2024-04-02
  • php中链表的详细介绍
    这篇文章主要介绍“php中链表的详细介绍”,在日常操作中,相信很多人在php中链表的详细介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”php中链表的详细介绍”的疑惑有所帮...
    99+
    2024-04-02
  • Java类加载过程与类加载器详细介绍
    目录1. 类加载过程加载链接初始化2. 类加载器启动类加载器扩展类加载器应用类加载器自定义类加载器双亲委派模型1. 类加载过程 加载 通过类的全限定名(包名 + 类名),获取到类的...
    99+
    2022-11-13
    Java 类加载过程 Java加载器
  • 【MySQL进阶教程】锁的详细介绍
    前言 本文为 【MySQL进阶教程】锁 相关知识,下边将对锁的概述,全局锁(包含全局锁的介绍,语法与特点),表级锁(包含表级锁的介绍,表锁,元数据锁,意向锁),行级锁(包含行级锁的介绍,行锁,间隙锁...
    99+
    2023-09-01
    mysql 数据库 java
  • PHP Array 数组详细介绍
    目录前言语法定义数组 array()用方括号的语法新建/修改数组解包实用函数转换为数组前言 PHP 中的 array 实际上是一个有序映射。映射是一种把 values 关联到 key...
    99+
    2024-04-02
  • CentOS8详细安装教程--图文介绍超详细
    CentOS8详细安装教程--图文介绍超详细 目录 VMware介绍 CentOS介绍 一、下载 镜像地址:Download 这里选择阿里镜像  二、开始安装Centos8 1.【文件】----->【新建虚拟机】(快捷键:Ctrl+N) 2...
    99+
    2023-09-01
    linux 运维 服务器 centos windows
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作