go 中的 Telnet 客户端

Telnet client in go

我正在尝试从 go 客户端发送 'hello world' 到 telnet 服务器。在 documentation 我找到了例子:

var caller telnet.Caller = telnet.StandardCaller    
telnet.DialToAndCall("localhost:5555", caller)

现在发送 'helloworld' 的下一步是什么?

telnet 库实现了 'Writer' 类型。 Writer Type 有一个 Write 方法。

在下面的示例中,您可以看到 CallTELNET 使用 stdin 和 stdout 来允许程序的用户通过 telnet 进行通信。您可以通过 运行 程序发送 "hello world" 并键入您希望发送的所需文本,然后按回车键。

主要包

import (
    "bufio"
    "fmt"
    "log"
    "os"

    "github.com/reiver/go-oi"
    "github.com/reiver/go-telnet"
)

type caller struct{}

func (c caller) CallTELNET(ctx telnet.Context, w telnet.Writer, r telnet.Reader) {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        oi.LongWrite(w, scanner.Bytes())
        oi.LongWrite(w, []byte("\n"))
    }
}

func main() {
    fmt.Printf("Dial to %s:%d\n", "localhost", 8080)
    err := telnet.DialToAndCall(fmt.Sprintf("%s:%d", "localhost", 8080), caller{})

    if err != nil {
        log.Fatal(err)
    }
}

找到示例 here and here

使用 go-telnet

的编程连接示例
func SetTest() {
    conn, _ := telnet.DialTo("localhost:5555")
    conn.Write([]byte("hello world"))
    conn.Write([]byte("\n"))

}