net
是Go语言中用于网络编程的标准库。它提供了一系列的函数和类型,用于创建网络连接、传输数据、处理网络协议等。在本文中,我们将详细介绍net
包,并给出一些示例代码。
TCP连接
TCP是一种面向连接的协议,它能够确保数据在传输过程中的可靠性和顺序性。net
包提供了一些函数和类型,用于创建和管理TCP连接。
创建TCP连接
Dial
函数用于创建一个TCP连接。它需要指定服务器的IP地址和端口号。
conn, err := net.Dial("tcp", "127.0.0.1:8080")
if err != nil {
// 处理错误
}
defer conn.Close()
// 向服务器发送数据
_, err = conn.Write([]byte("Hello, World!"))
if err != nil {
// 处理错误
}
// 从服务器接收数据
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil {
// 处理错误
}
fmt.Println("从服务器接收到的数据为:", string(buf[:n]))
在上面的示例中,我们创建了一个TCP连接,并向服务器发送了一条消息。然后,我们从服务器接收了一条响应。
监听TCP连接
Listen
函数用于在指定的IP地址和端口上监听TCP连接。
ln, err := net.Listen("tcp", "127.0.0.1:8080")
if err != nil {
// 处理错误
}
defer ln.Close()
// 等待客户端连接
conn, err := ln.Accept()
if err != nil {
// 处理错误
}
defer conn.Close()
// 从客户端接收数据
buf := make([]byte, 1024)
n, err := conn.Read(buf)
if err != nil {
// 处理错误
}
fmt.Println("从客户端接收到的数据为:", string(buf[:n]))
// 向客户端发送数据
_, err = conn.Write([]byte("Hello, Client!"))
if err != nil {
// 处理错误
}
在上面的示例中,我们创建了一个TCP监听器,并等待客户端连接。一旦客户端连接成功,我们就从客户端接收了一条消息,并向客户端发送了一条响应。