【笔记】Go语言的网络编程

前言

Go语言的tcp网络编程

引入包

1
import net

服务端

  • 可以用telnet测试socket连通性
1
2
3
4
5
6
7
8
9
10
11
// 监听端口
listen, err := net.Listen("tcp", "0.0.0.0:8080")
// 延时关闭
defer listen.Close()
for {
// 等待客户端连接
conn, err := listen.Accept()

...

}

获取客户端的IP地址和端口号

1
conn.RemoteAddr().String()

准备一个协程接受客户端发来的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func process(conn net.Conn) {

defer conn.Close()

for {
buf := make([]byte, 1024)
n, err := conn.Read(buf) // 没有连接时会阻塞
if err != nil {
// 客户端连接断开后退出协程
return
}
// 输出到终端
fmt.Print(string(buf[:n]))
}

}

客户端

1
2
// 访问服务器端口
conn, err := net.Dial("tcp", "127.0.0.1:8080")

发送数据给服务端

<str>:字符串

1
n, err := conn.Write([]byte("<str>"))

完成

参考文献

哔哩哔哩——尚硅谷