Go-标准库-net(一)

2023-04-21 15:37:16 浏览数 (1)

net是Go语言中用于网络编程的标准库。它提供了一系列的函数和类型,用于创建网络连接、传输数据、处理网络协议等。在本文中,我们将详细介绍net包,并给出一些示例代码。

TCP连接

TCP是一种面向连接的协议,它能够确保数据在传输过程中的可靠性和顺序性。net包提供了一些函数和类型,用于创建和管理TCP连接。

创建TCP连接

Dial函数用于创建一个TCP连接。它需要指定服务器的IP地址和端口号。

代码语言:javascript复制
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连接。

代码语言:javascript复制
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监听器,并等待客户端连接。一旦客户端连接成功,我们就从客户端接收了一条消息,并向客户端发送了一条响应。

go

0 人点赞