用node.js写一个TCP连接
时间: 2023-05-11 21:05:44 浏览: 133
可以使用以下代码来建立一个基本的TCP连接:
```javascript
const net = require('net');
const client = new net.Socket();
client.connect(8080, 'localhost', function() {
console.log('Connected');
client.write('Hello, server! This is a TCP client.');
});
client.on('data', function(data) {
console.log('Received: ' + data);
});
client.on('close', function() {
console.log('Connection closed');
});
```
这个代码片段使用了Node.js的内置net模块来创建一个TCP客户端。在connect()函数中,我们指定了服务器的IP地址和端口号。在连接成功后,我们向服务器发送了一条消息,并在data事件中接收服务器返回的数据。最后,在close事件中,我们打印出连接关闭的消息。
相关问题
node.js写一个终端聊天室
好的,以下是简单的node.js终端聊天室实现:
1. 创建一个文件夹,命名为`terminal-chatroom`,在该文件夹下创建一个`server.js`文件和一个`client.js`文件。
2. 在`server.js`中,使用`net`模块创建一个TCP服务器,监听指定端口并处理连接请求。代码如下:
```javascript
const net = require('net');
const server = net.createServer(socket => {
// 新客户端连接时触发该事件
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} connected.`);
// 监听客户端发送的数据
socket.on('data', data => {
console.log(`Received data from client ${socket.remoteAddress}:${socket.remotePort}: ${data.toString()}`);
// 广播消息给所有客户端
server.connections.forEach(conn => {
if(conn !== socket) {
conn.write(`Client ${socket.remoteAddress}:${socket.remotePort}: ${data}`);
}
});
});
// 监听客户端断开连接事件
socket.on('end', () => {
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} disconnected.`);
});
});
// 启动服务器,监听指定端口
server.listen(8888, () => {
console.log('Server started, listening on port 8888.');
});
```
3. 在`client.js`中,使用`net`模块创建一个TCP客户端连接到服务器。代码如下:
```javascript
const net = require('net');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 连接到服务器
const client = net.connect({port: 8888}, () => {
console.log('Connected to server.');
// 给服务器发送消息
rl.on('line', input => {
client.write(input);
});
});
// 监听服务器发送的数据
client.on('data', data => {
console.log(`Received data from server: ${data}`);
});
// 监听连接断开事件
client.on('end', () => {
console.log('Disconnected from server.');
});
```
4. 打开终端,进入`terminal-chatroom`文件夹,先启动`server.js`,再启动多个`client.js`,即可在不同的终端窗口中进行聊天。
node.js写一个终端聊天室用户注册
好的,以下是简单的node.js终端聊天室用户注册的实现:
1. 创建一个文件夹,命名为`terminal-chatroom`,在该文件夹下创建一个`server.js`文件和一个`client.js`文件。
2. 在`server.js`中,使用`net`模块创建一个TCP服务器,监听指定端口并处理连接请求。同时,定义一个`users`数组用来存储注册的用户。代码如下:
```javascript
const net = require('net');
const server = net.createServer(socket => {
// 新客户端连接时触发该事件
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} connected.`);
// 监听客户端发送的数据
socket.on('data', data => {
const message = data.toString().trim();
// 判断客户端发送的消息类型
if (message.startsWith('register:')) {
// 处理注册消息
const username = message.split(':')[1];
if (users.includes(username)) {
socket.write('Username already exists.');
} else {
users.push(username);
socket.write(`Welcome, ${username}!`);
}
} else {
// 广播消息给所有客户端
server.connections.forEach(conn => {
if (conn !== socket) {
conn.write(`Client ${socket.remoteAddress}:${socket.remotePort}: ${message}`);
}
});
}
});
// 监听客户端断开连接事件
socket.on('end', () => {
console.log(`Client ${socket.remoteAddress}:${socket.remotePort} disconnected.`);
});
});
const users = []; // 存储注册的用户
// 启动服务器,监听指定端口
server.listen(8888, () => {
console.log('Server started, listening on port 8888.');
});
```
3. 在`client.js`中,使用`net`模块创建一个TCP客户端连接到服务器。同时,定义一个`username`变量用来存储用户注册时输入的用户名。代码如下:
```javascript
const net = require('net');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let username = ''; // 存储用户注册时输入的用户名
// 连接到服务器
const client = net.connect({port: 8888}, () => {
console.log('Connected to server.');
// 给服务器发送消息
rl.on('line', input => {
if (username === '') {
// 如果用户尚未注册,则把输入的内容作为用户名进行注册
username = input;
client.write(`register:${username}`);
} else {
// 如果用户已经注册,则把输入的内容发送给服务器
client.write(input);
}
});
});
// 监听服务器发送的数据
client.on('data', data => {
console.log(data.toString());
});
// 监听连接断开事件
client.on('end', () => {
console.log('Disconnected from server.');
});
```
4. 打开终端,进入`terminal-chatroom`文件夹,启动`server.js`,再启动多个`client.js`,即可在不同的终端窗口中进行聊天和注册。当用户输入用户名后,会向服务器发送`register:用户名`的消息,服务器在处理该消息时,会检查该用户名是否已经存在,如果不存在,则把该用户名添加到`users`数组中,并向客户端发送欢迎消息;如果已经存在,则向客户端发送已经存在的消息。
阅读全文