Skip to content
Go back

TCP echo server

Published:  at  10:45 PM

TCP echo server ,客户端发什么,服务端回什么。可用来进行测试。

Golang

package main

import (
	"fmt"
	"log"
	"net"
)

func main() {
	// 指定服务器监听的端口
	port := "19999"
	// 创建TCP地址
	addr := fmt.Sprintf(":%s", port)

	// 监听指定端口
	l, err := net.Listen("tcp", addr)
	if err != nil {
		log.Fatalf("listen error: %v", err)
	}
	defer l.Close()

	log.Printf("Server is running on port %s", port)

	// 无限循环等待客户端连接
	for {
		// 接受连接
		conn, err := l.Accept()
		if err != nil {
			log.Printf("accept error: %v", err)
			continue
		}

		// 处理连接
		go handleConnection(conn)
	}
}

// handleConnection 处理单个客户端连接
func handleConnection(c net.Conn) {
	defer c.Close()

	// 创建一个缓冲区来存储读取的数据
	buffer := make([]byte, 1024)

	// 读取客户端发送的数据
	for {
		n, err := c.Read(buffer)
		if err != nil {
			log.Printf("read error: %v", err)
			break
		}

		// 写入相同的数据到客户端
		_, err = c.Write(buffer[:n])
		if err != nil {
			log.Printf("write error: %v", err)
			break
		}
	}
}

Node.js

// 引入net模块
const net = require('net');

// 创建一个TCP服务器
const server = net.createServer((socket) => {
  console.log('客户端连接上了');

  // 当收到客户端发送的数据时
  socket.on('data', (data) => {
    console.log(`收到客户端的数据: ${data}`);

    // 将收到的数据回发给客户端
    socket.write(data);
  });

  // 当客户端关闭连接时
  socket.on('end', () => {
    console.log('客户端断开连接');
  });

  // 处理错误事件
  socket.on('error', (err) => {
    console.error(`Socket error: ${err.message}`);
  });
});

// 监听端口
const PORT = 12345;
server.listen(PORT, "192.168.2.8", () => {
  console.log(`服务器正在监听端口 ${PORT}`);
});

// 处理服务器错误事件
server.on('error', (err) => {
  console.error(`Server error: ${err.message}`);
});

Share this post on:

Previous Post
将图片分辨率调整成同样大小
Next Post
如何在 Node.js 项目中使用 .env 环境变量