登录
首页 >  Golang >  Go教程

GolangTCP服务器端口监听教程

时间:2026-01-03 14:21:10 358浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Golang实现TCP服务器监听端口教程》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

用net.Listen("tcp", ":8080")监听所有IP的8080端口,Accept()循环接收连接并启用goroutine处理,通过Read/Write收发数据,示例实现回声服务器。

如何使用Golang实现TCP服务器_监听端口并接收客户端请求

监听端口:用 net.Listen 创建 TCP 服务端

使用 net.Listen("tcp", ":8080") 即可启动一个监听本地所有 IP 的 TCP 服务器,端口号为 8080。冒号前留空表示监听所有可用地址(等价于 0.0.0.0:8080)。如果只想监听本机(如调试),可写成 "127.0.0.1:8080"

接收连接:用 Accept 循环处理客户端

listener.Accept() 是阻塞调用,每次返回一个 net.Conn 接口,代表与某个客户端建立的连接。通常放在 for 循环里持续等待新连接:

  • 每个连接建议起一个 goroutine 处理,避免阻塞后续连接接入
  • 记得在处理完后调用 conn.Close() 释放资源
  • 可配合 context 或超时控制防止长期空挂

读写数据:通过 Conn.Read 和 Conn.Write 通信

拿到 net.Conn 后,就能像操作文件一样收发字节流:

  • conn.Read(buf) 读取客户端发来的数据,返回实际读到的字节数
  • conn.Write([]byte("hello")) 向客户端发送响应
  • 注意 Read 可能只读部分数据,需循环读或使用 bufio.Reader 简化处理
  • 若需按行或按协议解析,推荐封装成自定义 handler 函数

基础完整示例(无第三方依赖)

以下是一个最小可运行的回声服务器:

<code>package main

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

func handleConn(conn net.Conn) {
    defer conn.Close()
    buf := make([]byte, 1024)
    for {
        n, err := conn.Read(buf)
        if err == io.EOF {
            fmt.Println("client disconnected")
            return
        }
        if err != nil {
            log.Printf("read error: %v", err)
            return
        }
        // 回复收到的内容
        conn.Write(buf[:n])
    }
}

func main() {
    listener, err := net.Listen("tcp", ":8080")
    if err != nil {
        log.Fatal(err)
    }
    defer listener.Close()
    fmt.Println("Server listening on :8080")

    for {
        conn, err := listener.Accept()
        if err != nil {
            log.Printf("accept error: %v", err)
            continue
        }
        go handleConn(conn)
    }
}</code>

运行后,可用 telnet localhost 8080nc localhost 8080 测试连接和收发。

终于介绍完啦!小伙伴们,这篇关于《GolangTCP服务器端口监听教程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>