单向协议
// 1、加载net核心模块
const net = require('net')
// 2、创建一个服务器应用程序,得到一个服务器实例对象
const server = net.createServer()
// 3、监听客户端的连接事件connection,连接成功就会执行回调处理函数
server.on('connection', function () {
console.log('有客户端连接上来了');
})
// 5、服务器有一个事件叫做listening,表示开启监听成功之后回调处理函数
server.on('listening', function () {
console.log('服务器开启监听成功了,正在等待客户端连接')
})
// 4、启动服务器,开启监听
// 监听127.0.0.1:3000只能被本机所访问
server.listen(3000, '127.0.0.1')
启动服务器
启动另一个客户端输入:
telnet 127.0.0.1 3000
常见的一些错误:
telnet不是内部命令或找不到
解决:win+R 输入 control 弹出
重新输入
telnet 127.0.0.1 3000
当客户端连接成功后回调函数中的socket对象的各个属性(单向通信)
// 在服务器中使用Socket
// 1、加载net核心模块
const net = require('net')
// 2、创建一个服务应用程序,得到一个服务器
const server = net.createServer()
let count = 0
// 5、监听客户端的连接事件,连接成功就会执行回调处理函数
// 每次回调函数被调用,就会有一个新的socket对象在回调函数中
server.on('connection', (socket) => {
socket.write('连接成功!~')
count++
// 当前连接人数
console.log("当前连接人数:" + count);
// 当前连接成功之后的客户端发送一个消息
socket.write('欢迎连接服务器' + '\n')
// 打印socket对象中的属性
console.log('要写入缓冲区的字节数:' + socket.bufferSize + '\n');
console.log('远程IP地址字符串:' + socket.remoteAddress + '\n');
console.log('远程IP协议字符串:' + socket.remoteFamily + '\n');
// 远程端口一般服务器要用的端口是2的8次方
console.log('远程端口:' + socket.remotePort + '\n')
console.log('网络连接绑定的本地IP地址字符串:' + socket.localAddress + '\n')
console.log('本地端口地址:' + socket.bytesRead + '\n');
console.log('接收到的字节数:' + socket.bytesWritten + '\n');
// 暂停一下
socket.pause()
setTimeout(() => {
// 恢复一下
socket.resume()
// 远程IP地址字符串
socket.write('remoteAddress:' + socket.remoteAddress + '\n')
// 远程端口
socket.write('remotePort:' + socket.remotePort + '\n')
}, 5000)
})
// 3、启动服务器,开启监听
server.listen(3000, '127.0.0.1', () => {
console.log('服务器开启!');
})
// 4、服务器有一个事件叫做listening,表示开启监听成功之后回调处理函数
server.on('listening', () => {
console.log('服务器开启监听成功,服务器正在等待连接.........');
})
服务器和客户端双向通信
客户端
/*
双向通信-客户端
*/
// 导入net模块
const net = require('net')
// 当调用createConnection之后,就会到的一个与服务器连接的端口
// 该对象中包含当前客户端与服务器通信的ip地址和端口号
const client = net.createConnection({
port: 3000
})
// 什么时候客户端和服务器连接成功了
// 可以通过监听client的connect事件来处理
client.on('connect', () => {
// 客户端与服务器连接成功了
console.log('服务器连接成功!');
client.write('客户端问服务端:你吃了吗?')
})
client.on('data', (data) => {
// 输出服务器发送给当前客户端的数据
console.log(data.toString());
})
服务器
/*
双向通信-服务器
*/
const net = require('net')
const server = net.createServer()
// 每一个客户端与服务器建立连接成功之后,都会触发一次connection
server.on('connection', (socket) => {
//
socket.on('data', (data) => {
console.log(data.toString());
socket.write('服务端回复客户端:我吃的小豆包')
})
})
server.listen(3000, '127.0.0.1', () => {
console.log('server listening at port 3000');
})