PHP 套接字与流

2024-01-01

我认为 php 套接字和 php 流是相互重叠的。
我已经成功地使用套接字或流制作了一个 CLI PHP 聊天客户端和一个服务器。

这里有一些说明性的代码行:
使用套接字:

...
$main_socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Cannot create socket.\n");
@socket_bind($main_socket, $host, $port) or die("Could not bind to socket $host : $port.\n");
@socket_listen($main_socket, 5) or die("Could not set up socket listener\n");
...

使用流:

...
$main_socket = @stream_socket_server ("tcp://$host:$port", $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN) or die("Cannot create socket.\n");
$clients = array($main_socket);
$clients_peername = array(array('port' => $port));

fputs(STDOUT, "Waiting for connections...\n");
...

这里的要点是可以制作客户端和服务器 使用套接字函数或流函数。

我知道 Streams 是 PHP 核心的一部分,而 Sockets 是扩展。

我的问题是:

  • 当提到套接字编程时,套接字和流有什么区别?
  • 是否存在与套接字编程相关的任何功能,一个人可以拥有,而另一个人却不能?

根据手册,套接字扩展是更底层的。例如,您在创建套接字时可以更细粒度地控制套接字,并且可以选择 SOCK_STREAM、SOCK_DGRAM、SOCK_SEQPACKET 等。

套接字扩展基于流行的 BSD 套接字实现了套接字通信功能的低级接口,提供了充当套接字服务器和客户端的可能性。

有关更通用的客户端套接字接口,请参阅stream_socket_client()、stream_socket_server()、fsockopen() 和 pfsockopen()。

source: http://www.php.net/manual/en/intro.sockets.php http://www.php.net/manual/en/intro.sockets.php

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 套接字与流 的相关文章

  • php - 致命错误:调用 AppServ 中未定义的函数 mcrypt_get_iv_size()

    当我通过以下方式使用 mcrypt get iv size 函数时发现一个问题AppServ https www appserv org 我尝试寻找与解决问题相关的主题 但是 我尝试将 libmcrypt dll 下载到 symtem32
  • 使用 .htaccess 进行 PHP 设置时出现 500 内部服务器错误

    当我使用时 htaccess对于以下 PHP 设置 我得到500 Internal Server Error访问网站时 中的代码 htaccess file php flag display errors off php flag log
  • 将 int 转换为 float/double [重复]

    这个问题在这里已经有答案了 当我想要转换时遇到了麻烦integer价值观float 带点的数字 a 7200 b a 3600 echo b 2 b floatval b echo b 2 但它应该回响2 0 or 2 00 我也尝试过se
  • PHP 可以解压缩使用 .NET GZipStream 类压缩的文件吗?

    我有一个 C 应用程序 它与基于 PHP 的 SOAP Web 服务进行通信以进行更新和许可 我现在正在开发一个反馈系统 供用户通过软件自动提交错误和跟踪日志 根据我之前发布的问题 我认为 Web 服务将是实现此目的的最佳方法 最有可能以最
  • 在Python中通过套接字发送文件

    我正在尝试用 python 编写一个实现套接字的程序 每个客户端发送一个 PDF 文件 服务器接收该文件并将标题更改为 file number pdf 例如 file 1 pdf 出现的问题是只有客户端才能成功发送文件 当第二个客户端尝试发
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • Laravel 5.7:维护模式的自定义刀片模板,但不是 503.blade.php

    每次php artisan down开启后 Laravel 显示 503 页面 好的 我可以通过创建名为的新文件来自定义它503 blade php inside resources views errors 关键是 我在任何时候都不认为维
  • 不区分大小写的 array_unique

    我正在尝试编写几行代码来创建一个不区分大小写的数组唯一类型函数 这是我到目前为止所拥有的 foreach topics as value lvalue strtolower value uvalue strtolower value if
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • Chart.js - 使用 mysql 和 php 从数据库获取数据

    我正在尝试将静态数据转换为使用数据库结果 我将使用MySQL and PHP 示例代码 var randomScalingFactor function return Math round Math random 100 var lineC
  • 类 Doctrine\Common\Collections\ArrayCollection 不是有效的实体或映射的超类

    我有三个实体 特征值 php
  • WordPress 子主题覆盖父主题包括

    我正在创建 WordPress 子主题 需要覆盖某些小部件模板 我正在尝试使用此方法来覆盖父主题调用 覆盖主题功能的正确方法 http www venutip com content right way override theme fun
  • 一次用 \r\n & \n & \r 分解字符串? [复制]

    这个问题在这里已经有答案了 我想按行分割字符串 但我希望它基于所有主要使用的换行符 n r n r 并返回一个包含每一行的数组 您可以使用正则表达式和preg split http php net preg split反而 lines pr
  • 如何下载临时文件

    我正在尝试创建一个简短的 PHP 脚本 该脚本采用 JSON 字符串 将其转换为 CSV 格式 使用fputcsv 并使该 CSV 可作为下载的 csv 文件使用 我的想法是使用tmpfile 不用担心 cronjobs 或磁盘空间不足 但
  • Yii2 组件将数据传递给 __construct

    我有一个库 我想将其用作组件 在配置文件中我这样设置 components gt superLib gt class gt SuperLib construct gt first second Maybe Yii 2 have proper
  • 如何使用 PHP 将字符串按大写字母分解?

    我有一个字符串 CamelCaseString 我想对大写字母进行explode split 或一些更好的方法来将该字符串分解为单个单词 最简单的方法是什么 解决方案更新 此链接指向一个略有不同的问题 但我认为答案通常比本页当前问题的答案更
  • Laravel 4.2 Composer 安装错误:“无法扫描类”

    我想通过 Composer 在新的 Laravel 4 2 安装上安装一些软件包 但是 我遇到了例外 这是我的作曲家文件 name laravel laravel description The Laravel Framework keyw
  • 从 $i 获取值,顺序被打乱

    for i 0 i lt count name i some output ommited td td
  • 通过 Facebook 图 api 点赞帖子

    你好 我对 facebook PHP SDK 没有什么问题 我想通过 facebook PHP SDK 点赞帖子或其他内容 我正在执行此代码 我认为它应该是正确的 但显然它不起作用 给定的错误代码是的 PHP SDK不知道这种POST请求
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中

随机推荐

  • Node.js 异步系列函数的参数

    我需要执行如下代码 function taskFirst k v console log k v function taskSecond k v console log k v function run var g1 Something v
  • PDB不会在断点处停止

    我对直接使用 pdb 进行调试还很陌生 并且在调试 Django 应用程序时遇到了一些问题 这是我正在做的事情 python m pdb manage py runserver pdb b core views py 22 Breakpoi
  • 如何在reactJS中自定义reactstrap下拉菜单

    使用 ReactJS 创建示例应用程序并为 boostrap 安装 Reactstrap 我在工作正常的应用程序中使用下拉组件 代码是
  • 在 Erlang 中解析 JSON

    我有一段 JSON 字符串 我想在 Erlang 中解析它 看起来像 id1 str1 str2 str3 id2 str4 str5 我查看了 mochijson2 和其他几个 JSON 解析器 但我真的不知道该怎么做 非常感谢任何帮助
  • Jasmine 单元测试中模拟 AngularJS 模块依赖关系

    我试图在将其他模块作为依赖项的模块内对控制器代码进行单元测试 但无法弄清楚如何正确模拟它们 我正在使用 Jasmine 框架并使用 Karma Testaulous 运行我的测试 模块代码 var app angular module ev
  • 如何检查 DNS 服务器是否设置为“自动获取”

    当我使用网卡设置的 DNSServerSearchOrder 属性获取服务器 DNS 设置时 它会返回自动解析到的 DNS 服务器 而不是指示其动态的值 例如 null 例如 要将我的 DNS 服务器设置为 自动获取 我会执行以下操作 Ma
  • 如何在 C++ 中使用 setenv() 导出变量?

    我需要导出几个变量 使它们在命令行中如下所示 export ROS HOSTNAME xxx 如何在 C 中使用 setenv 来实现这一目标 Thanks 来自setenv 手动输入 SYNOPSIS include
  • Javascript - 获取任何键盘布局的按键描述

    For a rich web application I need keyboard shortcuts Because there are many different keyboard layouts they have to be c
  • 识别给定类的所有对象以进行进一步处理

    假设您正在使用一个大型工作环境 并且您不太擅长跟上环境变量 或者您有一些自动生成大量对象的进程 有没有办法扫描你的ls 识别具有给定类的所有对象 考虑以下简单示例 Random objects in my environment x lt
  • 如何使用 SQL Server 2008 将学生成绩分为五分位数

    谁能帮我将学生成绩分为五等分吗 我认为 SQL Server 2012 中有一个功能 但我们还没有t upgraded to it as we are using 2008R2 I triedNtile 5 但它没有生成所需的结果 我需要低
  • 在 intel xdk 中构建应用程序:您是否需要构建 cordova 才能使用 cordova api

    我刚刚了解了英特尔 xdk 我正在研究它的工作原理以及生成应用程序的步骤 但是 我在理解它时陷入了困境 你能为我澄清一些事情吗 据我了解 Intel XDK 默认提供扩展 cordova api 的 api 因此 cordova api 包
  • 如何创建使用单独进程的 Android Activity 和 Service

    我有一个 Android 应用程序 其中包含一个活动和一个服务 目前它们都存在于同一进程中并使用相同的堆 但我希望必须为服务分离进程 堆 IE 我希望服务完全独立于活动 这样如果活动崩溃就不会影响服务 然而 我确实希望它们可以作为单个应用程
  • C语言中如何连接两个字符串?

    如何添加两个字符串 I tried name derp herp 但我得到一个错误 表达式必须具有整型或枚举类型 C 不支持其他一些语言所具有的字符串 C中的字符串只是一个指向数组的指针char由第一个空字符终止 C中没有字符串连接运算符
  • 以太坊 Solidity 中的划分

    我正在创建一个发行代币的合约 我希望持有代币的账户能够检查他们拥有的所有代币所占的百分比 我知道以太坊还没有实现浮点数 我应该怎么办 在客户端而不是在 Solidity 中执行该计算可能是最好的 最低的 Gas 成本并且实施起来很简单 如果
  • 无法将 ndarray 转换为 Tensor 或 TensorFlow 模型中出现运算错误

    我正在 TensorFlow 中实现 Wasserstein DCGAN 运行此行时会发生错误 train image sess run image batch 处理这个异常会抛出另一个异常 Fetch argument array 0 0
  • 用自身初始化 C++ const 变量

    刚才我遇到了以下类型的错误 include
  • BeagleBone Black 无法识别 USB 蓝牙适配器

    我正在尝试弄清楚如何让 USB 蓝牙适配器与我的 BeagleBone Black 配合使用 我尝试了一些不同的方法但没有成功 但看到其他人的帖子似乎取得了一些成功 我已经尝试过此处记录的过程 http www michaelhleonar
  • JMS:我们可以在 OnMessage() 中从队列中获取多条消息而不提交或回滚吗

    我正在使用 JMS 客户端 它从远程服务器接收 JMS 消息 我正在客户端的 onMessage 方法中监听 JMS 消息 我面临的问题是 即使我定期在客户端消费消息 消息也会在服务器端累积 我根据在客户端进行的处理发送 rollback
  • /usr/bin/ld:搜索 foo 时跳过不兼容的 foo.so

    我使用的是 Ubuntu 13 10 64 位 在编译 vlfeat 库的 python 包装器时遇到以下错误 g o vlfeat so vl aib o vl generic o vl hikmeans o vl ikmeans o v
  • PHP 套接字与流

    我认为 php 套接字和 php 流是相互重叠的 我已经成功地使用套接字或流制作了一个 CLI PHP 聊天客户端和一个服务器 这里有一些说明性的代码行 使用套接字 main socket socket create AF INET SOC