c++ - 基于 TCP/IP 的 HTTP?

标签 c++ http tcp sdl-net

我正在尝试使用 CPP 和 SDL_Net 制作 HTTP 客户端。我正在使用 char [] 缓冲区发送和接收信息。

基本上,我在端口 80 上连接到下面提到的站点:

strcpy(buffer,"GET / HTTP/1.0 \n host: nullfakenothing.freeriderwebhosting.com \n \n");
SDLNet_TCP_Send(sd, (void *)buffer, strlen(buffer)+1);
SDLNet_TCP_Recv(sd, (void *)buffer, 200)>0

但我无法取回任何东西(程序卡在 Recv 上)。我使用的协议(protocol)是错误的还是整个 TCP/HTML 系统有问题?

最佳答案

您的 HTTP 协议(protocol)有虚假空格,应该有\r\n 终止符。这是未经测试的,但 HTTP 应该没问题。您可能想要添加其他 header 。

char buffer[1024];

std::strcpy(buffer, "GET / HTTP/1.1\r\n");
std::strcat(buffer, "Host: nullfakenothing.freeriderwebhosting.com\r\n");
std::strcat(buffer, "\r\n");

SDLNet_TCP_Send(sd, (void*) buffer, strlen(buffer));
SDLNet_TCP_Recv(sd, (void*) buffer, sizeof(buffer));

关于c++ - 基于 TCP/IP 的 HTTP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159663/

相关文章:

c++ - Qt的QFontMetrics::horizo​​ntalAdvance()在代码编辑器实现中丢失

c++ - 如何删除所有子路径?

angularjs - AngularJS HTTP 中的模拟服务

rest - 空结果 204 或 404 请求中的 HTTP 返回码是什么?

SSL 编程接口(interface)

c# - 即使在 Tcpclient.NoDelay = true 之后,socket.send 也会将数据包附加在一起;

c++ - 如何在 C++ 中成对显示正则表达式输出?

c++ - isdigit() 不能在一个简单的程序中工作?

iphone - 为 HTTP Live 分段器生成 64kbps 纯音频 mpeg,以满足 64kbps 纯音频要求

networking - 在 QB64 中通过网络接收和发送字符串