nodejs 创建tcp/udp服务器和客户端
TCP
server
// https://nodejs.org/api/net.html
const net = require("net");
// https://nodejs.org/api/net.html#net_net_createserver_options_connectionlistener
// https://nodejs.org/api/net.html#net_class_net_socket
const server = net.createServer((c /*net.Socket*/) => {
console.log("client connected");
c.setEncoding("utf-8");
c.on("data", (data) => {
// 处理发送的数据,telnet连接后,会把键盘的输入事件发送过来
console.log(data);
c.write("hello\r\n");
});
c.on("end", () => {
console.log("client disconnected");
});
// https://stackoverflow.com/questions/36314892/when-should-i-use-socket-pipe-on-nodejs-net-socket
// tcp 是双向的,pipe会把发送来的信息原封不动的返回去
// c.pipe(c);
});
server.on("error", (err) => {
console.log(err.message);
});
server.listen(5000, () => {
console.log("server bound");
console.log(server.address());
});
// 测试
// telnet localhost 5000
client
const net = require("net");
// https://nodejs.org/api/net.html#net_net_createconnection_options_connectlistener
const client = net.createConnection({ port: 5000 }, () => {
console.log("connected to server!");
client.write("i'm tcp client. \r\n");
});
client.on("data", (data) => {
console.log(data.toString());
client.end();
});
client.on("end", () => {
console.log("disconnected from server");
});
tcp流:

UDP
server
// https://nodejs.org/api/dgram.html
const dgram = require("dgram");
const server = dgram.createSocket("udp4");
server.on("error", (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
const message = Buffer.from(`hi\n`);
server.on("message", (data, rinfo) => {
console.log(data.toString());
console.log(rinfo);
server.send(message, rinfo.port, rinfo.address, (err) => {
if(err) console.log(err);
});
});
server.on("listening", () => {
console.log(`server listening`);
console.log(server.address());
});
server.bind(5000);
client
const dgram = require("dgram");
const message = Buffer.from(`i'm udp client.`);
const client = dgram.createSocket("udp4");
client.on("error", (err) => {
console.log(err);
});
client.on("message", (data, rinfo) => {
console.log(data.toString());
});
client.send(message, 5000, "localhost", (err) => {
// client.close();
});
udp流:

nodejs 创建tcp/udp服务器和客户端的更多相关文章
- node.js中通过dgram数据报模块创建UDP服务器和客户端
node.js中 dgram 模块提供了udp数据包的socket实现,可以方便的创建udp服务器和客户端. 一.创建UDP服务器和客户端 服务端: const dgram = require('dg ...
- Python 绝技 —— UDP 服务器与客户端
i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...
- Linux系统编程(37)—— socket编程之UDP服务器与客户端
典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...
- swoole创建TCP服务端和客户端
服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0 ...
- windows下UDP服务器和客户端的实现
UDP是面向非连接的协议,因此在实现UDP服务器时,服务器不用总是处于监听状态.可以直接收发数据. 服务器端 1.初始化 WASStartup ( ... ) 2.创建Socket s ...
- 【卷二】网络三—UDP服务器与客户端
这是另一个类型的服务器/客户端,无连接的 UDP: (User Datagram Protocol) 用户数据报协议 参考: P58~P60 UDP 时间戳服务器 [时间戳 就是ctime()显示的内 ...
- nodejs创建一个HTTP服务器 简单入门级
const http = require('http');//请求http.createServer(function(request, response){ /*createServer该函数 ...
- 170925_1 Python socket 创建TCP的服务器端和客户端
[Python版本]3.6 [遇到的问题] 客户端和服务器端都遇到:TypeError: a bytes-like object is required, not 'str' [解决方案] 参考:ht ...
随机推荐
- 「THP3考前信心赛」题解
目录 写在前面 A 未来宇宙 B 空海澄澈 C 旧约酒馆 算法一 算法二 D 博物之志 算法一 算法二 算法三 写在前面 比赛地址:THP3 考前信心赛. 感谢原出题人的贡献:第一题 CF1422C, ...
- Mysql 不能使用逗号的情况
不存在逗号的情况: 联合查询: 1.UNION SELECT * FROM ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c JOIN (SELECT 4) ...
- OSPF优化
1.点对点(背靠背)的优化 两台设备直连(逻辑上的直连). 将OSPF宣告接口配置为点对点模式,不用选举DR.减少20S时间 interface Ethernet0/1 ip ospf network ...
- Spring Boot自定义starter必知必会条件
前言 在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Bo ...
- Python Line Messaging Api
Line Messaging line 是国外一个很火的实时通信软件,类似与WX,由于公司业务需求,需要基于line开发一个聊天平台,下面主要介绍关于line messaging api 的使用. 官 ...
- 3. Linear Regression with Multiple Variables
前面还有一章主要讲解,基本的Linear Algebra线性代数的知识,都比较简单,这里就直接跳过了. Speaker: Andrew Ng 1. Multiple featues 训练集的特征变成了 ...
- GPLT L2-007 家庭房产 (并查集)
题意: 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 思路: 输入和输出各构造一个结构体,利用并查集归并输入,枚举编号进行输出. #include &l ...
- HDU4622 Reincarnation【SAM】
HDU4622 Reincarnation 给出一个串,每次询问其一个子串有多少不同的子串 按每个后缀建立\(SAM\)不断往后加字符,然后记录答案,查询的时候直接用即可 //#pragma GCC ...
- 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)
题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...
- poj3585 Accumulation Degree(树形dp,换根)
题意: 给你一棵n个顶点的树,有n-1条边,每一条边有一个容量z,表示x点到y点最多能通过z容量的水. 你可以任意选择一个点,然后从这个点倒水,然后水会经过一些边流到叶节点从而流出.问你最多你能倒多少 ...