用Go语言以秒速创建TCP客户端

概要:简单描述或总结

为了调试目的,我迅速编写了一个用 Go 语言检查 TCP 请求的响应内容的代码。

Docker镜像

$ sudo docker pull golang

创建main.go

将example.com:22的部分更改为要连接的目标地址。

package main

import (
    "fmt"
)

import "net"

type Client struct {
    addr string
}

func NewClient(addr string) *Client {
    return &Client{addr: addr}
}

func (c *Client) Request() (string, error) {
    conn, err := net.Dial("tcp", c.addr)
    if err != nil {
        return "", err
    }
    defer conn.Close()

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

    return string(buf[:n]), nil
}

func main() {
    // 接続先。22番ポートにアクセスする例。
    dst := "example.com:22"
    c := NewClient(dst)

    // 
    resp, err := c.Request()
    if err != nil {
        panic(err)
    }

    fmt.Println(resp)
}

启动Docker容器并复制main.go文件。

# コンテナ起動
$ docker run -d --rm --name go-tcp-client -w /go/src -it golang /bin/bash
# go module作成
$ docker exec -w /go/src -it go-tcp-client /bin/bash -c 'go mod init tcp-client'
# main.goをコンテナへcp
$ docker cp main.go go-tcp-client:/go/src/

执行

$ docker exec -w /go/src -it go-tcp-client /bin/bash -c 'go run .'
SSH-2.0-OpenSSH_7.4

相关文章

    [Prometheus] blackbox_exporterで外形監視
广告
将在 10 秒后关闭
bannerAds