结构:

socket是应用层和传输层的桥梁。(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中)

涉及数据:

socket所涉及的数据是报文,是明文。

作用:

建立长久链接,供网络上的两个进程通信。

下面是Tcp服务端的代码:

var net = require('net');//模块引入
var listenPort = 8080;//监听端口
// 创建socket服务端,下面是对客户端的处理
var server = net.createServer(function(socket){
socket.setEncoding('binary');
socket.on('data',function(data){//接收到客户端传来的数据
console.log('client send:' + data);
}); socket.write('Hello client!\r\n');//写入数据,客户端可以接收 socket.on('error',function(exception){//数据错误事件,比如客户端断开连接
console.log('socket error:' + exception);
socket.end();//断开服务器
}); socket.on('close',function(data){ //客户端关闭事件,断开连接
console.log('client closed!');
});
}).listen(listenPort); //下面是服务器监听事件
server.on('listening',function(){//服务器开启 开始监听端口
console.log("server listening:" + server.address().port);
}); server.on('connection',function(){//服务器和客户端建立起联系时执行
console.log("server 已经连接");
}); server.on("error",function(exception){//服务器错误事件
console.log("server error:" + exception);
});

下面是TCP客户端的代码:

var net = require('net');
var port = 8080;
var host = '127.0.0.1';
var client= new net.Socket();//创建socket客户端
client.setEncoding('binary');
client.connect(port,host,function(){//连接到服务端
client.write('hello server');//向端口写入数据到达服务端
});
client.on('data',function(data){
console.log('from server:'+ data);//得到服务端返回来的数据
});
client.on('error',function(error){
console.log('error:'+error);//错误出现之后关闭连接
client.destory();
});
client.on('close',function(){
console.log('Connection closed');//正常关闭连接
});

运行两个node的结果:

Node学习笔记:建立TCP服务器和客户端之间的通信的更多相关文章

  1. Node学习笔记2:建立HTTP服务器和客户端之间的通信

    http服务器端: var http = require('http'); var server = http.createServer(); server.on('request', functio ...

  2. Node学习HTTP模块(HTTP 服务器与客户端)

    Node学习HTTP模块(HTTP 服务器与客户端) Node.js 标准库提供了 http 模块,其中封装了一个高效的 HTTP 服务器和一个简易的HTTP 客户端.http.Server 是一个基 ...

  3. 06.swoole学习笔记--异步tcp服务器

    <?php //创建tcp服务器 $host='0.0.0.0'; $port=; $serv=new swoole_server($host,$port); //设置异步进程工作数 $serv ...

  4. node学习笔记2——搭建服务器

    搭建服务器关键词: require('http') —— 请求 node 里面的 http 模块 createServer —— 创建一个服务器 request —— 请求 response—— 响应 ...

  5. socket编程 ------ 建立 TCP 服务器和客户端流程(阻塞方式)

    服务器端: 服务器端先创建一个socket,然后把这个socket绑定到端口上,接着让它向tcp/ip协议栈请求一个监听服务并创建一个accept队列来接受客户端请求. void creat_tcpS ...

  6. 10-51单片机ESP8266学习-AT指令(ESP8266连接路由器,建立TCP服务器,分别和C#TCP客户端和AndroidTCP客户端通信+花生壳远程通信)

    http://www.cnblogs.com/yangfengwu/p/8871464.html 先把源码和资料链接放到这里 源码链接:https://pan.baidu.com/s/1wT8KAOI ...

  7. python socket之tcp服务器与客户端demo

    python socket之tcp服务器与客户端demo 作者:vpoet mails:vpoet_sir@163.com server: # -*- coding: cp936 -*- ''' 建立 ...

  8. Python 绝技 —— TCP服务器与客户端

    i春秋作家:wasrehpic 0×00 前言 「网络」一直以来都是黑客最热衷的竞技场.数据在网络中肆意传播:主机扫描.代码注入.网络嗅探.数据篡改重放.拒绝服务攻击……黑客的功底越深厚,能做的就越多 ...

  9. Swoole系列(三):建立TCP服务器并发送数据测试

    <?php // 建立tcp服务器下 $host = '0.0.0.0'; $port = 9501; $serv = new swoole_server($host,$port); $serv ...

随机推荐

  1. JXL生成Excel,并提供下载(1:生成Excel)

    public String exportExcel(long id) { String preeReviewName = "文件名"; String filePath = 路径名; ...

  2. MyEclipse复制js文件乱码

    MyEclipse复制js文件乱码 右击js文件:

  3. C数据结构 : 线性表 与 链表

    一.线性表 一般表现为数组,使用一组地址连续的存储单元依次存储数据元素,如图: 它具有如下特点: 长度固定,必须在分配内存之前确定数组的长度. 存储空间连续,即允许元素的随机访问. 存储密度大,内存中 ...

  4. 深入理解java虚拟机---内存分配策略(十三)

    转载请注明原文地址:https://blog.csdn.net/initphp/article/details/30487407 Java内存分配策略 使用的ParNew+Serial Old收集器组 ...

  5. spring boot 发邮件

    报错:  Mail server connection failed; nested exception is javax.mail.MessagingException: Could not con ...

  6. window.location.replace()与window.location.href()区别

    有3个页面 a,b,c 如果当前页面是c页面,并且c页面是这样跳转过来的:a->b->c 1:b->c 是通过window.location.replace("..xx/c ...

  7. MyEclipse创建Web项目入门指南

    MyEclipse 在线订购年终抄底促销!火爆开抢>> MyEclipse最新版下载 本教程将指导您创建和部署简单的Hello World Web项目.在本教程中,您将学习如何: 创建一个 ...

  8. HTTP网页过程

    HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)    建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立 ...

  9. normalization 阅读笔记

    https://zhuanlan.zhihu.com/p/33173246 阅读笔记 1. normalization whiting - PCA 2. Internal Covariate Shif ...

  10. ios读取plist文件:

    @property (nonatomic,strong) NSArray *imageData;//定义一个数组 //懒加载数据 -(NSArray *)imageDate { if(_imageDa ...