HTTP over TCP / IP?

时间:2015-03-20 04:53:20

标签: 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上)。我使用的协议是错误的还是存在针对整个TCP / HTML系统的东西?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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