用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で外形監視