ADA의 소켓을 통해 헤더를 보내는 데 문제가 있습니다. 다음은 코드입니다.Ada - GNAT.Sockets로 HTTP 응답 보내기
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 헤더를 통해 확인) 만 표시되고 전혀 내용이 표시되지 않습니다 (어떤 메시지는 단지 HTTP/1.1 200 OK
을 보내기 때문에 조금 이상합니다).
약간의 도움을 주시면 감사하겠습니다. 미리 감사드립니다 :)
마지막으로 내 코드가 잘못되었다는 사실을 알게되었습니다. 해결책은 매우 간단했습니다. 나는 오랜 시간이 지난 후에 그걸 생각해 냈다. 그러나 그것은 좋은 교훈이었습니다. 당신의 충고가 옳았습니다. (필자는'Output' 대신'Write'를 사용해야했습니다.) 또 하나는 내가 쓰고 있던 소켓을 닫아야한다는 것이 었습니다. 내가받은 모든 지원에 감사드립니다. :) – TheUnnamed454