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服务器和客户端的更多相关文章

  1. node.js中通过dgram数据报模块创建UDP服务器和客户端

    node.js中 dgram 模块提供了udp数据包的socket实现,可以方便的创建udp服务器和客户端. 一.创建UDP服务器和客户端 服务端: const dgram = require('dg ...

  2. Python 绝技 —— UDP 服务器与客户端

    i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...

  3. Linux系统编程(37)—— socket编程之UDP服务器与客户端

    典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...

  4. TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库

    这个库andrdoi也可以用,而且是基于类的使用方式: 它支持类似聊天室的功能,即一个人说话,所有客户端都能收到,当然也支持点点通信.它还支持 RMI 的方式调用远程过程. https://githu ...

  5. swoole创建TCP服务端和客户端

    服务端: server.php <?php //创建Server对象,监听 127.0.0.1:9501端口    $serv = new swoole_server("127.0.0 ...

  6. windows下UDP服务器和客户端的实现

      UDP是面向非连接的协议,因此在实现UDP服务器时,服务器不用总是处于监听状态.可以直接收发数据.   服务器端   1.初始化 WASStartup ( ... )   2.创建Socket s ...

  7. 【卷二】网络三—UDP服务器与客户端

    这是另一个类型的服务器/客户端,无连接的 UDP: (User Datagram Protocol) 用户数据报协议 参考: P58~P60 UDP 时间戳服务器 [时间戳 就是ctime()显示的内 ...

  8. nodejs创建一个HTTP服务器 简单入门级

    const http = require('http');//请求http.createServer(function(request, response){    /*createServer该函数 ...

  9. 170925_1 Python socket 创建TCP的服务器端和客户端

    [Python版本]3.6 [遇到的问题] 客户端和服务器端都遇到:TypeError: a bytes-like object is required, not 'str' [解决方案] 参考:ht ...

随机推荐

  1. P6739 [BalticOI 2014 Day1] Three Friends 题解

    目录 写在前面 Solution 何为字符串哈希(可跳过): Code 写在前面 P6739 [BalticOI 2014 Day1] Three Friends 听说这题可以用比较暴力的做法过,比如 ...

  2. HTML5.1 新增的14项特性学习

    1.防止网络钓鱼攻击 使用target=_'blank'时, 新打开的标签可以更改window.opener.location到一些钓鱼网站,它会在开放页面上代表你执行一些Javascript代码.为 ...

  3. Java 8新特性(Lambda,Stream API)

    由于最近总监要求学习Java 8的一些知识,就去网上找了 一套教程来学习学习,将学习结果做一个小的总结记录,方便以后使用: 1.Java 8的优点 2.Lambda表达式优点 2.1Lambda实例 ...

  4. ElasticSearch 入门简介

    公号:码农充电站pro 主页:https://codeshellme.github.io ElasticSearch 是一款强大的.开源的.分布式的搜索与分析引擎,简称 ES,它提供了实时搜索与聚合分 ...

  5. Spring Boot自定义starter必知必会条件

    前言 在目前的Spring Boot框架中,不管是Spring Boot官方还是非官方,都提供了非常多的starter系列组件,助力开发者在企业应用中的开发,提升研发人员的工作效率,Spring Bo ...

  6. 昨晚12点,女朋友突然问我:你会RabbitMQ吗?我竟然愣住了。

    01为什么要用消息队列? 1.1 同步调用和异步调用 在说起消息队列之前,必须要先说一下同步调用和异步调用. 同步调用:A服务去调用B服务,需要一直等着B服务,直到B服务执行完毕并把执行结果返回给A之 ...

  7. Alternating Strings Gym - 100712D 简单dp && Alternating Strings II Gym - 100712L 数据结构优化dp

    比赛链接:https://vjudge.net/contest/405905#problem/D 题意: 给你一个长度为n的由0或1构成的串s,你需要切割这个串,要求切割之后的每一个子串长度要小于等于 ...

  8. c语言实现--双向循环链表操作

    1,双向链表相当于两个单向循环链表. 2,双向链表的结点定义. 1 struct DULNode 2 { 3 int data; 4 struct DULNode * prior; 5 struct ...

  9. poj2001 Shortest Prefixes (trie树)

    Description A prefix of a string is a substring starting at the beginning of the given string. The p ...

  10. 洛谷 P2391.白雪皑皑 (并查集,思维)

    题意:有\(n\)个点,对这些点进行\(m\)次染色,第\(i\)次染色会把区间\((i*p+q)\ mod\ N+1\)和\((i*q+p)\ mod\ N+1\)之间的点染成颜色\(i\),问最后 ...