我正在编写C代码,尝试为一些网络实践创建一个非常基本的代理服务器。我的目标是,只需使用我的代理从浏览器获取“GET”请求,然后将其转发到相应的服务器,从服务器获取信息,然后将所有数据发送回浏览器。到目前为止,我得到了第一部分工作,即我得到了GET命令的内容。现在我真的陷入“转发”部分。我如何将GET的内容转发到它应该去的地方,比如说www.example.com并获取该信息?我显然不能使用相同的套接字描述符并尝试使用send命令,因为那时我会将GET命令发送回试图发送它的浏览器。我一直在使用Beej的指南和随机在线提示。这不是我的第一个网络计划,但我肯定会被困在这里。我以为我必须对HOST(在GET中)进行DNS查找,获取IP然后使用getaddrinfor + connect,然后connect会出现连接被拒绝的错误。任何提示或提示对我都非常有帮助。谢谢
编辑:我在堆栈上跟随另一个答案详细说明了所涉及的步骤。基本上我要接受“重建/发送新请求部分”
Open port
Listen on port
Get all request sent from the client to that port (maybe make the whole thing multithreaded to be able to handle more than 1 request at a time)
Determine if it is a valid HTTP 1.0 request
Extract the request components
Rebuild the request according to what type of proxy you are
Send the new request
Get the response
Send response to client
edit2:HTTP 1.1代理
答案 0 :(得分:0)
您在HTTP代理中所要做的就是实现,即识别并执行CONNECT命令。一旦你有了工作,其他一切都只是来回复制字节。