HTTP over TCP/IP?
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协议有伪空格,\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)感到满意,或者至少查看一些数据包转储或工作代码,看看你需要做什么。由于很多事情都是错误的,指出具体的错误是没有意义的。
相关文章:
- 为什么 boost::asio::ip::tcp::basic_stream_socket::available 的运行
- 使用 boost::asio::ip::tcp::iostream 的低带宽性能
- boost::asio::ip::tcp::iostream,先启动客户端,然后等待服务器
- Boost asio ip tcp iostream 是否支持异步?
- 如何避免与"asio::ip::tcp::iostream"的数据竞争?
- boost::asio::ip::tcp::resolver::iterator 检查值是否为空
- 从 asio::ip::tcp::socket 直接写入 std::string
- 线程安全关闭同步使用的 boost::asio::ip::tcp::socket
- 移动构造函数不使用 boost::asio::ip::tcp::socket 调用
- 自定义套接字继承自boost::asio::ip::tcp::Socket
- 从 streambuf 使用 boost::asio::ip::tcp 将数据部分写入 TCP 套接字
- Std::bind在boost::asio::ip::tcp::resolver上失败
- boost::asio::ip::tcp::socket中的async_read_some()实际上是如何工作的
- 当' boost::asio::ip::tcp::resolver::resolve() '失败时,应该提供哪个'
- 为什么boost::asio::ip::tcp::iostream解析输入?
- Using boost::asio::ip::tcp::socket::cancel() and socket::clo
- boost::asio::ip::tcp::socket::cancel和socket::close之间有什么不同
- 无法检测到C++同步提升::asio::ip::tcp::套接字连接正在关闭
- 如何使用boost::asio::ip::tcp::iostream发送POST ?
- ASIO ip::tcp::iostream and TCP_NODELAY