章节

17.2 TCP 客户端

本篇学习 Go TCP 客户端的连接、发送与读取响应流程,并能连接基础 TCP 服务。

TCP 客户端

概念说明

TCP 客户端负责主动连接服务端。
连接建立后,客户端可以向服务端发送数据,也可以读取服务端返回的数据。

运行客户端前,需要先启动 TCP 服务端。
否则连接会因为目标端口没有监听而失败。

语法/规则

  1. 使用 net.Dial("tcp", address) 连接服务端。
  2. 使用 conn.Write(data) 发送数据。
  3. 使用 conn.Read(buffer) 读取响应。
  4. 使用完成后要关闭连接。
  5. 读写都要检查错误。

TCP 客户端示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
	"fmt"
	"net"
)

func main() {
	conn, err := net.Dial("tcp", "127.0.0.1:9000")
	if err != nil {
		panic(err)
	}
	defer conn.Close()

	_, err = conn.Write([]byte("ping")) // 向服务端发送消息
	if err != nil {
		panic(err)
	}

	buffer := make([]byte, 1024)
	n, err := conn.Read(buffer)
	if err != nil {
		panic(err)
	}

	fmt.Println(string(buffer[:n])) // 只处理服务端真正返回的数据
}

输出结果:

1
pong

常见错误

  1. 没先启动服务端就运行客户端,导致连接被拒绝。
  2. 服务端监听地址和客户端连接地址不一致。
  3. 忘记关闭连接,导致资源没有及时释放。
  4. 读取响应时使用整个 buffer,而不是 buffer[:n]
本文禁止转载
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
最近构建时间:2026-04-17 19:07:48 CST
载入天数...载入时分秒...
发表了 1 篇文章 · 发表了 152 篇笔记 · 总计 18 万 0 千字