了不起的Node.js--之五 TCP连接

TCP连接

传输控制协议(TCP)是一个面向连接的协议,它保证了两台计算机之间数据传输的可靠性和顺序。

TCP是一种传输层协议,它可以让你将数据从一台计算机完整有序地传输到另一台计算机。

Node.js这个框架的出发点就是为了网络应用开发所设计的。如今,网络应用都是用TCP/IP协议进行通信的。

Node Http服务器是构建于Node
TCP服务器之上的。从编程角度来说,也就是Node中得http.Server继承自net.Server(net是TCP模块)。

TCP有哪些特性

TCP的首要特性就是它是面向连接的,面向连接的通信和保证顺序的传递。

还有面向字节、可靠性、流控制、拥堵控制、Telnet等特性。

Telnet详解

Telnet是一个早期的网络协议,旨在提供双向的虚拟终端。在SSH出现前,它作为一种控制远程计算机的方式被广泛使用,如远程服务器管理。它是TCP协议上层的协议。

$ telnet

绝大部分Telnet使用的是23端口。

下面我们一起看一个telnet的例子:下载


# web-server.js
var http=require(‘http‘);
var serv=http.createServer(function (req, res){
res.writeHead(200, {‘Content-Type‘: ‘text/html‘});
res.end(‘<marquee>Smashing Node!</marquee>‘);
});
serv.listen(3000);

使用telnet来建立一个连接

$ telnet localhost 3000

服务器端的‘<marquee>Smashing
Node!</marquee>‘信息并未到客户端这里。原因在于,要往TCP连接中写数据,必须首先创建一个HTTP请求,这就是套接字(socket)。

在终端输入GET/HTTP/1.1然后按两下回车键。

我们来总结一下:

1.成功建立了一个TCP连接。

2.创建了一个HTTP请求。

3.接收到了一个HTTP响应。

4.测试了一些TCP的特性。到达的数据和在Node.js中写得一样:先写了Content-Type响应头,然后是响应体,最后所有的信息都按序到达。

了不起的Node.js--之五 TCP连接,码迷,mamicode.com

时间: 2024-10-17 17:26:08

了不起的Node.js--之五 TCP连接的相关文章

了不起的Node.js读书笔记

原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 第二章 Js概览 基于GoogleV8引擎 Object.keys(o) 数组方法:遍历forEach.过滤filter.改变map 实现了String.prototype.trim() 含有JSON解析 第三章 阻塞与非阻塞IO 单线程注意点 小心处理内存中的变量,可能会影响两次访问的结果 不要编写阻塞式代码,可能会影响第二次访问的时间 事件轮训 先注册事件 不断询问这些事件是否已经分发dispatch 当事件分发

[读书笔记]了不起的node.js(三)

这周的nodejs学习内容为几个依赖包的使用,把书上的例子都敲了一遍.这篇就以例程为线索,复习一下一周的工作. 1.connect 这个例程主要是使用connect依赖包,connect提供一个中间件(由函数组成,与请求.响应对象交互)的功能.书中也介绍了connect内置其他的中间件,这些中间件起到组织代码完成web功能的作用. 2.session 使用connect进行用户会话,进行基本的登录系统.通过中间件实现了检查登录.展示表单.用户匹配.处理登出的功能.展示了中间件的强大和组织方式.

[读书笔记]了不起的node.js(四)

这周的学习主要是nodejs的数据库交互上,并使用jade模板一起做了一个用户验证的网站.主要是遇到了一下几个问题. 1.mongodb版本过低 npm ERR! Not compatible with your operating system or architecture: [email protected] 0.9.9只支持linux,darwin,freebsd这几个系统,最新版本已支持wins. 2.nodejs进行insert操作后:无法读取结果 1 app.post('/sign

paip.最好的脚本语言node js 环境搭建连接mysql

6.4 一些说明 数据属性可以重写同名的方法属性.这是为了避免在大型系统中产生问题的意外名称冲突.所以用一些减少冲突的常用方法是很有效果的.常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性. 数据属性就像和对象的普通用户一样可以被方法引用.换句话说,类不能用来实现纯净的数据类型.事实上,在python中不能强制数据隐藏,一切基于约定.(另一方面,如C中写的,python的实现可以做到完全隐藏实现细节并且在必要是可以控制

[读书笔记]了不起的node.js(二)

这周做项目做得比较散(应该说一直都是这样),总结就依据不同情境双开吧-这篇记录的是关于node的学习总结,而下一篇是做项目学到的web前端的知识. 1.HTTP篇 node的HTTP模块在第一篇时接触过,这里来学习几个例程中出现的API. 1 var qs = require('querystring'); 2 3 require('http').createServer(function(req, res){ 4 if('/' == req.url){ 5 res.writeHead(200,

[读书笔记]了不起的node.js+实践(一)

环境的变化带来了技术大跃进,机遇和挑战同时到来.基于我js也没有学,只好赶鸭子上架一起学了.(>﹏<) 1.先读读书 一开始就不知死活地看<深入浅出node.js>,弄得团团转,看完才知道这本书是要一定基础的.在网上搜刮到了41页的<node入门>,自己学着搭建了一个Web应用.并且在刷新成就感后,就抱读<了不起的node.js>.现准备看完这本书后再回读<深入浅出node.js>. 2.搭建环境 运行git上的例程(3次报错) 在官网下载msi

基于Node.js搭建TCP聊天服务器

作者:zhanhailiang 日期:2014-11-23 原理: 服务器端维持所有的客户端连接列表: 当服务器收到某个客户端的消息时,将其广播给其它的客户端连接: 当某个客户端连接退出时,将其从客户端连接列表中剔除: 实现: var net = require('net'); var server = net.createServer(); var sockets = [];   // accept connection server.on('connection', function(soc

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

Node.js 构建TCP服务

构建TCP服务 三次握手连接: 1.客户端请求连接 2.服务器响应 3.开始传输 服务端 // 构建TCP服务 服务端 const net = require('net') const server = net.createServer() server.on('connection', clientSocket => { console.log('有新的客户端连接了') //服务端通过 clientSocket 监听 data 事件 clientSocket.on('data', data =