为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 PHP 将字节流发送到套接字?

如何使用 PHP 将字节流发送到套接字?

PHP
MMMHUHU 2023-09-08 14:25:46
在 GO 中我可以执行以下操作:conn, _ := net.Dial("tcp", CONNECT) // Clientrequest := []byte{01, 00} // The request start with 0100request = append(request, []byte(`09302020073014323720200730007402`)...) // The requestconn.Write(request)这确实有效,但是我无法将其转换为 PHP。到目前为止我所拥有的:$fp = stream_socket_client("tcp://x:x", $errno, $errstr, 5);  if (!$fp) {      echo "$errstr ($errno)<br />\n";  } else {      $queryString = '010009302020073014323720200730007402';          fwrite($fp, $queryString);      echo fgets($fp, $responseSize);      fclose($fp);  }    我尝试使用此处描述的解决方案但没有成功,服务器无法识别我的输入。
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

在您的 Go 示例中,您的请求以 bytes0x01和开头0x00。在 PHP 中,您正在编写字符串的字节编码'0100'。它们并不完全相同,您可以在这里查看它们的不同之处: https: //play.golang.org/p/0gidDZe4lZF

您真正想要写入的是字符串开头的单字节 0x0 和 0x1,而不是这些字符。

使用 PHP 的内置chr 函数,我们可以使用单字节 0x0 和 0x1 创建一个字符串,如下所示:

$queryString = chr(0) . chr(1);
$queryString .= '09302020073014323720200730007402'

除非 PHP 方面出现任何其他编码问题,否则它应该与 Go 示例中的查询相匹配。


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信