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

时间:2016-08-02 05:10:32

标签: node.js sockets webserver

基于套接字的示例,取自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);
});

Web服务器

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服务器示例的底层工作吗?

1 个答案:

答案 0 :(得分:3)

  

我的问题是两者有什么区别?

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

普通套接字服务器没有特定协议。您必须为从其发送/接收的字节创建自己的含义/数据格式。

两者都是服务器,并且正在侦听特定端口上的传入TCP连接。不同之处在于每个人都有什么协议来理解和沟通。

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

  

Web服务器是否在Socket示例的基础上进行了编程   其他功能,如请求和响应填充不同   属性或它们是不同类型的通信协议?

是的,Web服务器构建在套接字之上,并使用http协议了解在该套接字上发送的数据。

  

套接字是Web服务器的底层工作吗?   示例