HTTP over TCP/IP?

HTTP over TCP/IP?

本文关键字:IP TCP over HTTP      更新时间:2023-10-16

我正在尝试使用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协议有伪空格,\r\n应该有终止符。这是未经测试的,但HTTP应该可以。您可能需要添加其他标头。

char buffer[1024];
std::strcpy(buffer, "GET / HTTP/1.1rn");
std::strcat(buffer, "Host: nullfakenothing.freeriderwebhosting.comrn");
std::strcat(buffer, "rn");
SDLNet_TCP_Send(sd, (void*) buffer, strlen(buffer));
SDLNet_TCP_Recv(sd, (void*) buffer, sizeof(buffer));

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