问题标签 [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.

0 投票
1 回答
1651 浏览

php - 使用 PhpUnit 以正确的方法处理异常

我正在尝试使用 php 套接字为个人项目创建一个库。为此,我开始使用 phpUnit 来学习和编写(或多或少)定性库。

当我没有在 testConnection 方法中提供 try/catch 块时,php 会给出连接超时的错误(这是正常的,因为设备未连接)。但是php应该在下面的execute方法中处理异常,而不是在testConnection方法中。我似乎无法弄清楚这一点。

这是错误:

带有不应存在的方法和 try/catch 的测试类:

这(执行方法)是应该处理异常的地方:

解决方案

因为 try/catch 不会捕获错误/警告,所以我不得不抑制由 stream_socket_client 触发的警告。然后检查返回值是 false 还是流对象。如果为 false,则抛出适当的异常。

0 投票
1 回答
343 浏览

php - 将客户端连接到服务器时PHP套接字服务器关闭

我正在编写一个在 ubuntu 上运行的 php 套接字服务器脚本。

它运行良好,客户端可以连接/断开与该服务器的连接。但是,当客户端连接到长时间没有任何客户端连接的服务器时,服务器会静默关闭。

我将超时设置为 0(无限制),但服务器正在停止而没有任何错误或消息......就像这样。

我像这样为这个服务器编码。

当服务器突然停止时,它不会输出“服务器关闭”消息..

请帮忙。

对不起,我的英语不好。

0 投票
1 回答
7710 浏览

php - socket_bind() : 每个套接字地址(协议/网络地址/端口)通常只允许在 php 中使用一次

我从以下来源复制了客户端/服务器套接字程序

http://www.php.net/manual/en/sockets.examples.php

但是当我在浏览器中运行它时,它会给出以下错误消息:

socket_bind() 原因:每个套接字地址(协议/网络地址/端口)通常只允许使用一次。

我已经搜索并尝试了不同的解决方案,但无法找到解决方案。请帮助我的代码如下。

服务器.php

客户端.php

0 投票
1 回答
1123 浏览

php - 使用 php 接收 IMEI 后确认 Teltonika GPS 设备

嗨,请任何人都可以解释如何从服务器发送确认到 Teltonika GPS 设备?GPS 设备正在发送 IMEI(国际移动设备识别码)号码,一旦我获得 IMEI 号码,数据包正在等待确认。

0 投票
1 回答
1010 浏览

php - 用 PHP 关闭打开的 COM 端口

我运行这个 PHP 代码来打开我的 COM 端口。但我有一个错误

这是我的代码:

我该怎么办?我用fclose($fp)函数来做到这一点。但它不起作用。

0 投票
1 回答
2172 浏览

c# - 客户端强制关闭PHP套接字

我创建了一个 PHP 的套接字服务器。我使用 telnet 或 putty 连接到它,一切正常,直到我尝试在 .Net 应用程序中连接,每次执行应用程序时它都会关闭服务器,这是我的 C# 代码,只有两行:

当我运行应用程序时,PHP 套接字服务器因以下错误而关闭:

我尝试注释掉该Cli.close()行,果然套接字一直保持打开状态,直到 C# 应用程序关闭,然后它将关闭并显示与上面相同的错误消息。

那么导致问题的原因是什么?,客户端不应该以这种方式关闭套接字。

谢谢

0 投票
1 回答
1661 浏览

php - 通过 Telnet 使用 localhost 的 php 套接字连接

我一直在尝试创建套接字并将其绑定到 localhost127.0.0.1并尝试使用 Microsoft 的 telnet 服务连接到它,但是无论何时连接到指定的地址和端口,都会出现以下错误。

PHP 警告:socket_write():无法写入套接字 [0]:不允许发送或接收数据的请求,因为套接字未连接并且(当 s 使用 sendto 调用在数据报套接字上结束时)未提供地址.

socket_read 返回了一个类似的错误,我不明白 telnet 应该可以正常工作,向 localhost 发出 socket_connect 请求。

这是代码:

谢谢。

0 投票
1 回答
287 浏览

php - PHP:TCP 套接字,“无法绑定地址”

我见过其他人有这个问题,但也许我可以解释我的情况,你可以指出问题可能出在哪里。

我收到“警告:socket_bind():无法绑定地址 [98]:地址已在使用中”错误。

情况是这样的。我正在使用 Web 应用程序来触发另一个程序来执行任务(从网页界面)。该程序的结果通过套接字发送到我正在侦听套接字的 Web 应用程序。

首先我创建并打开套接字,然后触发另一个程序,然后当该程序完成时,它应该通过套接字将其结果发送回。

第一次尝试效果很好。然后下一次尝试(我多次触发此过程)我在尝试打开套接字时收到上述套接字绑定错误,显然套接字仍然被绑定。

我等了大约一分钟,我可以再次成功运行该过程。我认为套接字连接超时。

我不知道问题是因为我构建套接字代码的方式,还是问题出在我正在触发的外部程序中。我不太了解外部程序的内部结构,因为它是由其他人构建的 jar 文件。

这是我用于创建和处理套接字的代码。我只是在 php.net 上使用了一个示例,并根据我的需要对其进行了更改。

此外,如果“socket_bind”、“socket_listen”等行出现问题,是否有更有效的方法来处理套接字的关闭?

0 投票
2 回答
693 浏览

php - PHP fsockopen 客户端不接收发送的数据

我有以下(精简的)代码:

这段代码的问题是我没有发现请求到达被调用服务器的证据。该行var_dump($bytes_written, strlen($post_string));输出int(493) int(493)了 ,所以它应该已经接收到所有数据,但它没有。

如果我取消注释fread($fp, 1);它可以正常工作。这可能是可行的解决方案,但似乎没有意义。一定有更好的方法!

那么我的问题有两个:为什么要fread($fp, 1);解决我的问题,是否有更好的解决方案?

0 投票
2 回答
1732 浏览

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) 打开网站时,找不到脚本和样式。它是具有相同文件根目录的相同文件。不同的行为从何而来?