NodeJS中的网络编程

版权声明:本文章可转载,转载请注明本文地址,谢谢~ https://blog.csdn.net/weixin_43307658/article/details/87109261

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

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 参考文章

猜你喜欢

转载自blog.csdn.net/weixin_43307658/article/details/87109261