返回介绍

13.2.1 另一个版本的 TCP 客户端

发布于 2024-08-14 12:50:31 字数 3120 浏览 0 评论 0 收藏 0

Go 提供了一个不同的函数集,也可以开发 TCP 客户端和服务器。在这一节,您将学习使用这些函数来编写 TCP 客户端。

TCP 客户端命名为 otherTCPclient.go,它有以下四部分。第一段代码:

package main

import(
    "bufio"
    "fmt"
    "net"
    "os"
    "strings"
)

第二段代码:

func main() {
    arguments := os.Args
    if len(arguments) == 1 {
        fmt.Println("Please provide a server:port string!")
        return
    }

    CONNECT := arguments[1]
    tcpAddr, err := net.ResolveTCPAddr("tcp4", CONNECT)
    if err != nil {
        fmt.Println("ResolveTCPAddr:", err.Error())
        return
    }

net.ResolveTCPAddr() 函数返回一个 TCP 终点地址(类型是 TCPAddr),并且只能用于 TCP 网络。

第三段代码:

    conn, err := net.DialTCP("tcp4", nil, tcpAddr)
    if err != nil {
        fmt.Println("DialTCP:", err.Error())
        return
    }

net.DialTCP() 函数相当于 net.Dial() 对 TCP 网络。

最后的代码:

    for {
        reader := bufio.NewReader(os.Stdin)
        fmt.Print(">> ")
        text, _ := reader.ReadString('\n')
        fmt.Fprintf(conn, text + "\n")

        message, _ := bufio.NewReader(conn).ReadString('\n')
        fmt.Print("->: " + message)
        if strings.TrimSpace(string(text)) == "STOP" {
            fmt.Println("TCP client exiting...")
            conn.Close()
            return
        }
    }
}

执行 otherTCPclient.go,并与 TCP 服务交互将产生如下输出:

$ go run otherTCPclient.go localhost:8001
>> Hello from otherTCPclient.go!
->: Hi from netcat!
>> STOP
->:
TCP client exiting...

对于这个例子,TCP 服务器使用 netcat(1) 工具,执行输出如下:

$ nc -l 127.0.0.1 8001
Hello from otherTCPclient.go!

Hi from netcat!
STOP

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文