http.createserver与node.js中的net.createserver

我无法理解node.js中的net.createserver和http.createserver之间的区别。

我已阅读位于这两个urlhttps://nodejs.org/api/net.html#/net_net,https://nodejs.org/api/http.html#/http_class_http_server上的两种方法的文档。

据我所知,http.createserver创build一个http服务器,但文档说net.createserver创build一个tcp服务器。 我知道tcp是http的传输协议,并且http服务器设置为读取http请求标头。 我也很了解node.js中甚至发射器的概念。 不过,我不明白这个tcp服务器的概念,为什么会在node.js。 上下文是我正在编写“node.js in action”一书中的聊天应用程序示例。

谢谢你的帮助

http.createServer()设置了一个处理HTTP协议的服务器,这个协议确实是通过tcp传输的。 net.createServer()创build一个服务器,它可以简单地理解TCP连接何时发生,数据已经传输等等,但是不知道是否接收到有效的HTTP请求等等。

如果您正在编写Web服务器,请通过net.createServer()来支持http.createServer() ,因为这将为您节省大量工作。 如果您正在编写其他types的服务器,请不要使用http.createServer()

我不太了解Node.js,但是我知道关于networking的一些东西。 HTTP是在OSI模型的第7层(应用)层上工作的协议。 TCP是在OSI模型的第4(传输)层上工作的协议。 正如你所说的,HTTP是在TCP之上工作的。 通过http.createServer()创buildHTTP服务器的选项就是这样的,所以你不必自己使用net.createServer()来实现它。 协议TCP可能被许多应用程序使用,你可以创build你自己的,或实现一些不同于HTTP的协议,例如:FTP,DNS,SMTP,Telnet等等。