gpt4 book ai didi

sockets - Ada - 使用 GNAT.Sockets 发送 HTTP 响应

转载 作者:可可西里 更新时间:2023-11-01 16:48:38 27 4
gpt4 key购买 nike

我在 ADA 中通过套接字发送 header 时遇到问题。这是代码:

    Address.Addr := Addresses(Get_Host_By_Name(Host_Name), 1);
Address.Port := 80;
Create_Socket(Server);
Set_Socket_Option(Server, Socket_Level, (Reuse_Address, True));
Bind_Socket(Server, Address);
Listen_Socket(Server);
Accept_Socket(Server, Socket, Address);
Channel := Stream(Socket);

Receive_Socket(Socket, Data, Offset);
for I in 1 .. Offset loop
Append(Request, Character'Val(Data(I)));
end loop;

String'Output(Channel,
"HTTP/1.1 200 OK" & CRLF &
"Date: Fri, 09 Jan 2015 01:08:54 GMT" & CRLF & CRLF &
"something"
);

我正在使用 Firefox 浏览器作为客户端。当我通过套接字读取 GET 请求时,一切都很好。当我尝试发送响应时出现问题。在引用代码的最后一行之后,我的浏览器只得到 HTTP/0.9 200 OK(通过实时 HTTP header 检查)并且根本没有显示任何内容(这对我来说有点奇怪,因为我只是发送 HTTP/1.1 200 OK)。

非常感谢您的帮助。提前致谢:)

最佳答案

String’Output“将 Item 的值写入 Stream,包括任何边界或判别式”(ARM 13.13.2 (21))。

String 是不确定类型,因此您尝试输出的字符串确实有界限,您发送的是字符串第一个字符的索引,作为 4 字节二进制数,字符串最后一个字符的索引为4字节二进制数,然后是字符串。

改为使用 String'Write(参见 ARM 13.13.2 (9))。

关于sockets - Ada - 使用 GNAT.Sockets 发送 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27883369/

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