尝试连接到本地主机时出现“连接:连接被拒绝”

时间:2020-03-22 18:58:41

标签: go

我目前正在尝试创建一个TCP服务,该服务仅记录/存储发送给它的任何内容。我似乎无法理解为什么我无法使用DialTCP连接到本地主机。我不断 dial tcp 127.0.0.1:8080: connect: connection refused

func main() {
    errCh := make(chan error)
    tcpAddr, _ := net.ResolveTCPAddr("tcp", "localhost:8080")

    for {
        conn, err := net.DialTCP("tcp", nil, tcpAddr)
        if err != nil {
            log.Println("Could not connect -> ", err.Error())
        } else {
            recordMessage(conn, errCh)
            err = <-errCh
            log.Println("Error", err)
            conn.Close()
        }
        log.Println("trying again in 10 seconds..")
        time.Sleep(30 * time.Second)
    }
}

我查看了防火墙设置,发现似乎阻止了它。我仍然不确定是由于防火墙相关的原因,还是只是缺少明显的东西。

1 个答案:

答案 0 :(得分:0)

首先在终端中运行此Go程序-它监听端口2000,但您可以将其更改为8080或任何您想要的值:

func main() {
    // Listen on TCP port 2000 on all interfaces.
    l, err := net.Listen("tcp", ":2000")
    if err != nil {
        log.Fatal(err)
    }
    defer l.Close()
    for {
        // Wait for a connection.
        conn, err := l.Accept()
        if err != nil {
            log.Fatal(err)
        }
        // Handle the connection in a new goroutine.
        // The loop then returns to accepting, so that
        // multiple connections may be served concurrently.
        go func(c net.Conn) {
            log.Println(c)
            // Echo all incoming data.
            io.Copy(c, c)
            // Shut down the connection.
            c.Close()
        }(conn)
    }
}

然后在单独的终端中运行以下简单客户端:

func main() {
    var addr string
    if len(os.Args) > 1 {
        addr = os.Args[1]
    } else {
        addr = "localhost:2000"
    }
    conn, err := net.Dial("tcp", addr)
    if err != nil {
        log.Fatal(err)
        // handle error
    }
    fmt.Fprintf(conn, "foobar")
    conn.Close()
}

要求它连接到同一端口。连接应该成功,并且您应该看到服务器记录了一些内容。

现在尝试连接您的客户端。


您无需编写Go语言,就可以使用nc命令行工具( netcat )来完成这些操作。例如,nc -lv PORT在PORT上创建一个简单的侦听服务器。