我目前正试图在C++中实现我自己的Web服务器 - 不是为了生产性使用,而是为了学习。Linux中的套接字 - 我如何知道客户端已完成?
我基本上打开一个套接字,监听,等待连接并打开一个新的套接字,从中读取客户端发送的数据。到现在为止还挺好。但是我怎么知道客户端已经完成发送数据,而不是因为其他原因暂时停止发送更多的数据?
我当前的例子:当客户端发送POST请求时,它首先发送头,然后连续两次“\ r \ n”,然后发送请求正文。有时身体不包含任何数据。因此,如果客户端在发送标题后暂时无法发送任何内容 - 我怎么知道它尚未完成其请求?
这是否完全取决于使用的协议(HTTP),我的任务是根据我收到的数据找出这个问题,或者是否有类似EOF的套接字?
如果我无法从套接字中获取必要的信息,如何保护我的程序免受故障客户端的攻击? (无论如何,我想我必须这样做,因为它可能是一个攻击者,而不是错误的客户端发送错误的数据。)是我唯一的选择,直到通过协议定义完成请求或超时(由我)达成了?
我希望这是有道理的。
顺便说一句:请不要告诉我使用一些库 - 我想了解基础知识。
谢谢。这意味着我目前的“解决方法”实际上是要走的路。 :-) – sirion 2011-05-07 23:34:20