Node.js 构建TCP服务
构建TCP服务
- 三次握手连接:
1.客户端请求连接
2.服务器响应
3.开始传输
服务端
// 构建TCP服务 服务端
const net = require('net')
const server = net.createServer()
server.on('connection', clientSocket => {
console.log('有新的客户端连接了')
//服务端通过 clientSocket 监听 data 事件
clientSocket.on('data', data => {
// console.log(data)
// 把数据转换成字符串格式
console.log('来自客户端消息:', data.toString())
})
// 通过clientSocket 给当前连接的客户端发送数据
clientSocket.write('hello,我是服务端')
// 服务端监听 data 事件,获取终端中输入的数据
process.stdin.on('data', data => {
// 把终端中输入的数据发送给客户端
clientSocket.write(data.toString().trim())
})
})
// 监听端口
server.listen(3000, () => console.log('Server runing at http://127.0.0.1:3000'))
客户端
// 构建TCP连接服务 客户端
const net = require('net')
const client = net.createConnection({
host: '127.0.0.1',
port: 3000
})
client.on('connect', () => {
console.log('连接服务器成功了')
// 当客户端与服务端建立连接成功以后,客户端就可以给服务器发数据了
client.write('word,我是客户端')
// 当客户端与服务端建立连接以后,我么可以监听准端的输入
// 获取终端命令行中的输入发送给服务端
process.stdin.on('data', data => {
// console.log(data)
// 这是获取到的终端命令行输入的数据
// console.log(data.toString())
// 把获取到的终端命令行输入的数据发给服务端
// client.write(data)
// 去除数据中的回车和空格再发送给服务端
client.write(data.toString().trim())
})
})
// 客户端监听 data 事件
// 当服务端发消息过来就会触发该事件
client.on('data', data => {
// console.log(data)
// 把数据转换成字符串格式
console.log('来自服务端消息:', data.toString())
})Ï
案例:聊天室
服务端:
// 构建TCP服务 服务端
const net = require('net')
// 创建一个服务器实例
const server = net.createServer()
const clients = []
server.on('connection', clientSocket => {
// 把当前连接的客户端通信接口存储到数据中
clients.push(clientSocket)
console.log('有新客户端连接')
// 把服务端终端输入的内容群发给所有客户端
process.stdin.on('data', data => {
clientSocket.write('服务端公告:' + data.toString().trim())
})
clientSocket.on('data', data => {
console.log('来自客户端消息:', data.toString())
// 遍历所有的客户端连接发送数据
clients.forEach(socket => {
// 排除掉发消息自身的那个客户端
if (socket !== clientSocket) {
socket.write(data)
}
})
})
})
server.listen(3500, () => {
console.log('Server running At http://127.0.1.1:3500')
})
客户端:
// 构建TCP连接服务 客户端
const net = require('net')
// 创建一个客户端实例
const client = net.createConnection({
host: '127.0.0.1',
port: 3500
})
// 监听连接事件
client.on('connect', () => {
console.log('客户端与连接服务器成功')
// 把终端输入内容发给服务端
process.stdin.on('data', data => {
client.write(data.toString().trim())
})
})
client.on('data', data => {
console.log(data.toString())
})