通过 TCP/IP 的 HTTP?

HTTP over TCP/IP?

我正在尝试使用 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 上)。我使用的协议是错误的还是整个 TCP/HTML 系统有问题?

你发送的不是 HTTP,而是一些看起来有点像 HTTP 的东西,如果你不仔细看的话。请让自己对规范(如 RFC2616)感到满意,或者至少查看一些数据包转储或工作代码以了解您需要做什么才能准确地完成它们。由于很多事情都是错误的,因此指出具体错误是没有意义的。

您的 HTTP 协议包含虚假空格,应该有 \r\n 个终止符。这是未经测试的,但 HTTP 应该没问题。您可能想添加其他 headers.

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));