【发布时间】:2020-11-20 16:37:47
【问题描述】:
在 GO 中我可以执行以下操作:
conn, _ := net.Dial("tcp", CONNECT) // Client
request := []byte{01, 00} // The request start with 0100
request = append(request, []byte(`09302020073014323720200730007402`)...) // The request
conn.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);
}
我尝试使用所描述的解决方案here 没有成功,服务器无法识别我的输入。
【问题讨论】:
-
能否查看
fwrite的返回值,看看是否真的写成功了?此外,您的查询字符串很可能被序列化为字符串而不是二进制,因此无法将第一个字符识别为字节[]byte{01, 00}。 -
@JohnOss 嘿,约翰!写入成功,为简洁起见,我从代码中剥离了错误处理
-
程序将不同的数据写入连接。 Go 程序以 0、1 两个字节开始。PHP 程序以 48、49、49、49 四个字节开始。其余数据相同。