套接字和网络服务器示例之间的区别

difference between socket and web server example

基于套接字的示例,取自 nodejs 网站

var server = net.createServer((socket) => {
  socket.end('goodbye\n');
}).on('error', (err) => {
  // handle errors here
  throw err;
});

// grab a random port.
server.listen(() => {
  address = server.address();
  console.log('opened server on %j', address);
});

网络服务器

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

我的问题是这两者有什么区别? Web 服务器是在 Socket 示例之上编程的东西,具有附加功能,如填充了不同属性的请求和响应,或者它们是不同类型的通信协议? Web 服务器示例的幕后工作原理是套接字吗?

My question is what the difference between the two?

Web 服务器是理解 http 协议的特定类型的服务器。

普通套接字服务器没有特定的协议。您必须为您从中 send/receive 的字节创建自己的 meaning/data 格式。

两者都是服务器,正在侦听特定端口上的传入 TCP 连接。不同之处在于每个协议都配备了什么样的协议来理解和交流。

为了说明其他示例,ftp 服务器会理解 ftp 协议,webSocket 服务器会理解 webSocket 协议,SMTP 服务器会理解 SMTP 协议,IMAP 服务器会了解IMAP协议等等...

Is Web Server something programmed on top of Socket example with additional features like request and response populated with different properties or they are different types of communication protocols?

是的,网络服务器建立在套接字之上,并理解使用 http 协议在该套接字上发送的数据。

Is socket is what is working under the hood for the Web Server example?

是的。