我有兴趣在 Linux 系统下使用 C 和套接字库(或任何其他库)创建 Web 浏览器。
我的 Web 浏览器的基本用途是将网页的 HTML 呈现为用户可读的内容。
我只是希望有人指出我正确的方向。我对 C 语言中的套接字及其系统调用也有很好的理解......
指向正确方向的指针,嗯?
好吧,网络浏览器由一堆一起工作的系统组成。即使是最基本的网络浏览器也必须至少理解 HTTP/1.1 和 HTML。
它必须能够从远程服务器获取页面,将 HTML 解析为 DOM,将其渲染到视口,捕获鼠标点击,让它们激活超链接并导航到新页面。
但是,如果它只能做到这一点,那对于网络浏览器来说就是一个糟糕的借口;即使是最简单的网络浏览器也应该能够解析和应用 CSS;显示 JPEG、PNG 和 BMP 图像、解析 XML、执行 JavaScript、处理 cookie、离线存储、插件(如闪存)以及大约一百万种其他东西。
当然,我要说明的一点是,Web 浏览器在很多方面都不是学习软件项目的好项目,因为与基本功能相关的开销也很严重。