问题标签 [php-socket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 使用 PhpUnit 以正确的方法处理异常
我正在尝试使用 php 套接字为个人项目创建一个库。为此,我开始使用 phpUnit 来学习和编写(或多或少)定性库。
当我没有在 testConnection 方法中提供 try/catch 块时,php 会给出连接超时的错误(这是正常的,因为设备未连接)。但是php应该在下面的execute方法中处理异常,而不是在testConnection方法中。我似乎无法弄清楚这一点。
这是错误:
带有不应存在的方法和 try/catch 的测试类:
这(执行方法)是应该处理异常的地方:
解决方案
因为 try/catch 不会捕获错误/警告,所以我不得不抑制由 stream_socket_client 触发的警告。然后检查返回值是 false 还是流对象。如果为 false,则抛出适当的异常。
php - 将客户端连接到服务器时PHP套接字服务器关闭
我正在编写一个在 ubuntu 上运行的 php 套接字服务器脚本。
它运行良好,客户端可以连接/断开与该服务器的连接。但是,当客户端连接到长时间没有任何客户端连接的服务器时,服务器会静默关闭。
我将超时设置为 0(无限制),但服务器正在停止而没有任何错误或消息......就像这样。
我像这样为这个服务器编码。
当服务器突然停止时,它不会输出“服务器关闭”消息..
请帮忙。
对不起,我的英语不好。
php - socket_bind() : 每个套接字地址(协议/网络地址/端口)通常只允许在 php 中使用一次
我从以下来源复制了客户端/服务器套接字程序
但是当我在浏览器中运行它时,它会给出以下错误消息:
socket_bind() 原因:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。
我已经搜索并尝试了不同的解决方案,但无法找到解决方案。请帮助我的代码如下。
服务器.php
客户端.php
php - 使用 php 接收 IMEI 后确认 Teltonika GPS 设备
嗨,请任何人都可以解释如何从服务器发送确认到 Teltonika GPS 设备?GPS 设备正在发送 IMEI(国际移动设备识别码)号码,一旦我获得 IMEI 号码,数据包正在等待确认。
php - 用 PHP 关闭打开的 COM 端口
我运行这个 PHP 代码来打开我的 COM 端口。但我有一个错误
这是我的代码:
我该怎么办?我用fclose($fp)
函数来做到这一点。但它不起作用。
c# - 客户端强制关闭PHP套接字
我创建了一个 PHP 的套接字服务器。我使用 telnet 或 putty 连接到它,一切正常,直到我尝试在 .Net 应用程序中连接,每次执行应用程序时它都会关闭服务器,这是我的 C# 代码,只有两行:
当我运行应用程序时,PHP 套接字服务器因以下错误而关闭:
我尝试注释掉该Cli.close()
行,果然套接字一直保持打开状态,直到 C# 应用程序关闭,然后它将关闭并显示与上面相同的错误消息。
那么导致问题的原因是什么?,客户端不应该以这种方式关闭套接字。
谢谢
php - 通过 Telnet 使用 localhost 的 php 套接字连接
我一直在尝试创建套接字并将其绑定到 localhost127.0.0.1
并尝试使用 Microsoft 的 telnet 服务连接到它,但是无论何时连接到指定的地址和端口,都会出现以下错误。
PHP 警告:socket_write():无法写入套接字 [0]:不允许发送或接收数据的请求,因为套接字未连接并且(当 s 使用 sendto 调用在数据报套接字上结束时)未提供地址.
socket_read 返回了一个类似的错误,我不明白 telnet 应该可以正常工作,向 localhost 发出 socket_connect 请求。
这是代码:
谢谢。
php - PHP:TCP 套接字,“无法绑定地址”
我见过其他人有这个问题,但也许我可以解释我的情况,你可以指出问题可能出在哪里。
我收到“警告:socket_bind():无法绑定地址 [98]:地址已在使用中”错误。
情况是这样的。我正在使用 Web 应用程序来触发另一个程序来执行任务(从网页界面)。该程序的结果通过套接字发送到我正在侦听套接字的 Web 应用程序。
首先我创建并打开套接字,然后触发另一个程序,然后当该程序完成时,它应该通过套接字将其结果发送回。
第一次尝试效果很好。然后下一次尝试(我多次触发此过程)我在尝试打开套接字时收到上述套接字绑定错误,显然套接字仍然被绑定。
我等了大约一分钟,我可以再次成功运行该过程。我认为套接字连接超时。
我不知道问题是因为我构建套接字代码的方式,还是问题出在我正在触发的外部程序中。我不太了解外部程序的内部结构,因为它是由其他人构建的 jar 文件。
这是我用于创建和处理套接字的代码。我只是在 php.net 上使用了一个示例,并根据我的需要对其进行了更改。
此外,如果“socket_bind”、“socket_listen”等行出现问题,是否有更有效的方法来处理套接字的关闭?
php - PHP fsockopen 客户端不接收发送的数据
我有以下(精简的)代码:
这段代码的问题是我没有发现请求到达被调用服务器的证据。该行var_dump($bytes_written, strlen($post_string));
输出int(493) int(493)
了 ,所以它应该已经接收到所有数据,但它没有。
如果我取消注释fread($fp, 1);
它可以正常工作。这可能是可行的解决方案,但似乎没有意义。一定有更好的方法!
那么我的问题有两个:为什么要fread($fp, 1);
解决我的问题,是否有更好的解决方案?
php - html中的相对路径与php服务器
我php -S localhost:8000
用作我的开发服务器。最后,我将使用 nginx。但是我的php服务器有问题。
在我的app/index.html
我有:
当我在浏览器中打开页面时,localhost:8000/app
找不到 css 和 javascript。浏览器正在寻找localhost:8000/styles
相应的。localhost:8000/scripts
而不是localhost:8000/app/styles
相应的。localhost:8000/app/scripts
. 当我在没有服务器或使用 nginx 的情况下直接打开文件时,可以正确找到文件。所以php服务器改变了一些东西。这里发生了什么?
我在 Chrome 和 Firefox 中尝试过。两种浏览器中的行为相同。localhost/app
当我用( )打开网站时,nginx
一切都按预期工作。当我用localhost:8000/app
( php -S localhost:8000
) 打开网站时,找不到脚本和样式。它是具有相同文件根目录的相同文件。不同的行为从何而来?