美文网首页
NodeJS中的网络编程

NodeJS中的网络编程

作者: 这里王工头 | 来源:发表于2019-02-12 19:33 被阅读0次

欢迎访问我的博客,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~

1 前言

常听到网络编程,自己也有些模糊的概念,或许在哪里都用到过,只是不知道那是网络编程而已,今天花时间来好好理解一下,谨作为笔记行和分享,如果这里有什么需要补充或者不对的地方,欢迎道友指正

2 网络编程

2.1 什么是网络编程

看看百度百科的解释

网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理,代码、开发工具、数据库、服务器架设和网页设计这5部分你都要接触。

大概讲的是将一端的数据打包发送给另一端并由另一端解析

再看看另一篇文章廖雪峰老师对网络编程的理解

举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上

以上这个例子应该说的很清楚了,就是两个进程的通信,我把我的数据给你,你解析了再发给我

2.2 网络编程需要什么

前面搞懂了什么是网络编程,既然是两个进程间的通信,那么肯定有两个进程,要创建两个进程间的连接,两个进程间要通过这个连接相互发送数据进行通信

3 TCP Server

node中提供了net模块,用于TCP网络编程

想一想,通信需要满足什么?像打电话,两边都有人,我说一句话,你再根据我说的话接下一句话,那么这个过程需要什么呢?两台电话,电话线,说话的内容,还要经常听听说到哪了,打完电话要挂电话等等,这么一想对比官网中的例子也就好理解多了

下面是一个客户端与服务端通信的例子

关于客户端和服务端通信的详细流程可以参考图解HTTP:从输入网址到呈现

看看服务端做了什么?

  1. 创建一个电话(TCP Server)
  2. 打电话(启动服务)
  3. 听听说到哪了和说的什么内容(监听客户端动作与数据)
  4. 回话(将数据发送给客户端)
// server.js
var net = require('net')

// 1. 创建 TCP Server
var server = net.createServer(function(socket) {
    console.log('connected')

    // 3. 监听客户端的数据
    socket.on('data', function(data) {
        console.log('server got data from client: ', data.toString());
    });
    // 4. 监听客户端断开连接事件
    socket.on('end', function(data) {
        console.log('connection closed');
    });
    // 5. 发送数据给客户端
    socket.write('Hello\r\n');
})

// 2. 启动服务
server.listen(8080, function() {
    console.log('server bound');
})

再来看看客户端做了什么?

  1. 接通电话(连接服务器)
  2. 接听并分析电话传过来的内容(接收服务器数据)
  3. 选择回话或者挂断电话(发送请求或者断开连接)
  4. 断开电话(断开连接)
// client.js
var net = require('net')

// 1. 连接服务器
var client = net.connect({port: 8080}, function() {
    console.log('connected to server')
    client.write('World!\r\n')
})

// 2. 接收服务端的数据并分析
client.on('data', function(data) {
    console.log('client got data from server: ', data.toString())
    // 3. 断开连接
    client.end()
})

// 4. 断开连接
client.on('end', function() {
    console.log('disconnected from server')
})

4 结语

关于网络编程,还有太多太多内容,需要持续学习

5 参考文章

相关文章

  • NodeJS中的网络编程

    欢迎访问我的博客,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ 1 前言 常听到网络编程,自己也有些模糊的概念,...

  • 搭建区块链技术(go和JavaScript实现)

    技术图: 编程实现:(1)Nodejs/Javascript Nodejs平台强大的网络编程能力,以及js脚本语言...

  • 4. 网络操作

    不了解网络编程的程序员不是好前端,而NodeJS恰好提供了一扇了解网络编程的窗口。通过NodeJS,除了可以编写一...

  • 【“授人以渔”】怎么搞懂网络编程(c语言)

    说到网络编程,每个人理解都不一样。我问室友你知道网络编程么,就是socket编程么?他说nodejs起个网络服务呗...

  • 3. 文件操作

    让前端觉得如获神器的不是NodeJS能做网络编程,而是NodeJS能够操作文件。小至文件查找,大至代码编译,几乎没...

  • Swoole+Lumen:同步编程风格调用MySQL异步查询

    网络编程一直是PHP的短板,尽管Swoole扩展弥补了这个缺陷,但是其编程风格偏向了NodeJS或GoLang,与...

  • nodejs深入学(8)网络编程

    前言 本章主要介绍如下知识,通过了解这些知识,进一步理解node为何适合在分布式网络中扮演各种角色。另外,由于no...

  • Nodejs Stream

    前言 前端工程领域中使用Nodejs处处掣肘,原因无非是Nodejs中困难部分:文件和网络。而文件和网络都依赖一个...

  • NodeJs01

    1. 什么是NodeJs? NodeJs不是一门编程语言,是一个javascript的运行环境,NodeJs是采用...

  • 一个Android菜鸟入门Flutter 笔记(二)

    1. 网络编程与JSON解析 默认的HttpClient请求网络 在 Flutter 中,所有网络编程框架都是以 ...

网友评论

      本文标题:NodeJS中的网络编程

      本文链接:https://www.haomeiwen.com/subject/jgzkeqtx.html