基于套接字的示例,取自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服务器示例的底层工作吗?
答案 0 :(得分:3)
我的问题是两者有什么区别?
Web服务器是了解http协议的特定类型的服务器。
普通套接字服务器没有特定协议。您必须为从其发送/接收的字节创建自己的含义/数据格式。
两者都是服务器,并且正在侦听特定端口上的传入TCP连接。不同之处在于每个人都有什么协议来理解和沟通。
为了说明其他一些例子,ftp服务器会理解ftp协议,webSocket服务器会理解webSocket协议,SMTP服务器会理解SMTP协议,IMAP服务器会理解IMAP协议等等......
Web服务器是否在Socket示例的基础上进行了编程 其他功能,如请求和响应填充不同 属性或它们是不同类型的通信协议?
是的,Web服务器构建在套接字之上,并使用http协议了解在该套接字上发送的数据。
套接字是Web服务器的底层工作吗? 示例
是