gpt4 book ai didi

php - socket_read() 只返回标题,而不是实际的响应

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:49:33 25 4
gpt4 key购买 nike

我在运行

$data = socket_read($socket, 2048, PHP_BINARY_READ);

应该返回这样的字符串

// $data == ' 1840 kg G 008765 A '

而是返回

Original response: HTTP/1.1 200 OK
Date: Wed, 19 Feb 2003 09:00:00 GMT
Server: MoxaHttp/1.0
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/html
Content-length: 450

这看起来像是返回数据的标题。

socket_send 配置正确,我们有其他具有相同设置的客户端,它们返回正确的值。

你能说出问题是什么吗,为什么我没有得到预期的字符串?

更新:

我多次重复 socket_read() 来读取完整的字符串,它是:

Original response: HTTP/1.1 200 OK
Date: Wed, 19 Feb 2003 09:00:00 GMT
Server: MoxaHttp/1.0
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/html
Content-length: 450
Set-Cookie: ChallID=1656
<HTML><HEAD><TITLE>NPort Web Console</TITLE></HEAD> <FRAMESET rows=57,1* frameborder=NO> <FRAME name=top scrolling=NO target=contents src=top.htm noresize> <FRAMESET cols=200,*> <FRAME name=contents target=main src=contents.htm> <FRAME name=main src=main.htm marginwidth=0 marginheight=0 scrolling=auto> </FRAMESET> <NOFRAMES><BODY background=bg.gif><P>This page uses frame, but your browser doesn't support.</P></BODY> </NOFRAMES> </FRAMESET></HTML>

所以看起来它返回了一些不同的东西,这些东西应该被其他程序读取。

最佳答案

你试过了吗?

echo "Reading response:\n\n";
$buf = 'This is my buffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);

关于php - socket_read() 只返回标题,而不是实际的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com