无法建立连接,因为目标机器主动拒绝了它。Golang

huangapple go评论114阅读模式
英文:

No connection could be made because the target machine actively refused it Golang

问题

我有一个服务器:

  1. func main() {
  2. ln, err := net.Listen("tcp", "localhost:12345")
  3. if err != nil {
  4. log.Fatal(err)
  5. }
  6. for {
  7. conn, err := ln.Accept()
  8. if err != nil {
  9. fmt.Println("Error during Accept")
  10. fmt.Println(err)
  11. return
  12. }
  13. _, err = ws.Upgrade(conn)
  14. if err != nil {
  15. fmt.Println("Error during Upgrade")
  16. fmt.Println(err)
  17. return
  18. }
  19. go func() {
  20. // 一些代码
  21. }()
  22. }
  23. }

还有一个客户端,试图连接到我的计算机:

  1. func main() {
  2. buf := new(bytes.Buffer)
  3. payload := []byte("Hello World!")
  4. err := binary.Write(buf, binary.LittleEndian, payload)
  5. if err != nil {
  6. fmt.Println("Error during writing into Binary")
  7. fmt.Println(err)
  8. return
  9. }
  10. conn, err := net.Dial("tcp", "37.57.79.119:12345")
  11. if err != nil {
  12. fmt.Println("Error during Dialing")
  13. fmt.Println(err)
  14. return
  15. }
  16. buf.WriteTo(conn)
  17. defer conn.Close()
  18. answer, _ := io.ReadAll(conn)
  19. fmt.Println(string(answer))
  20. }

我的系统是 Kubuntu 20.04,我为 Windows 编译了客户端,并将其发送给我的朋友。在朋友的机器上,他运行它,然后收到错误消息:

  1. Error during Dialing
  2. dial tcp 37.57.79.119:12345: connectex: No connection could be made because the target machine actively refused it.

为什么?我的防火墙已关闭。

英文:

I have server:

  1. func main() {
  2. ln, err := net.Listen("tcp", "localhost:12345")
  3. if err != nil {
  4. log.Fatal(err)
  5. }
  6. for {
  7. conn, err := ln.Accept()
  8. if err != nil {
  9. fmt.Println("Error during Accept")
  10. fmt.Println(err)
  11. return
  12. }
  13. _, err = ws.Upgrade(conn)
  14. if err != nil {
  15. fmt.Println("Error during Upgrade")
  16. fmt.Println(err)
  17. return
  18. }
  19. go func() {
  20. some code
  21. }
  22. }()
  23. }
  24. }

and client, which trying to connect to my computer:

  1. func main() {
  2. buf := new(bytes.Buffer)
  3. payload := []byte("Hello World!")
  4. err := binary.Write(buf, binary.LittleEndian, payload)
  5. if err != nil {
  6. fmt.Println("Error during writing into Binary")
  7. fmt.Println(err)
  8. return
  9. }
  10. conn, err := net.Dial("tcp", "37.57.79.119:12345")
  11. if err != nil {
  12. fmt.Println("Error during Dialing")
  13. fmt.Println(err)
  14. return
  15. }
  16. buf.WriteTo(conn)
  17. defer conn.Close()
  18. answer, _ := io.ReadAll(conn)
  19. fmt.Println(string(answer))
  20. }

My system is Kubuntu 20.04, I compiling client for windows, and send it to my friend. On friend machine, he launches it, and receives error:

  1. Error during Dialing
  2. dial tcp 37.57.79.119:12345: connectex: No connection could be made because the target machine actively refused it.

Why? My Firewall is off.

答案1

得分: 4

net.Listen("tcp", "localhost:12345")正在监听localhost,客户端正在尝试通过IP连接。

尝试在localhost上连接客户端

  1. net.Dial("tcp", "localhost:12345")

或者在0.0.0.0上监听服务器

  1. net.Listen("tcp", "0.0.0.0:12345")
英文:

net.Listen("tcp", "localhost:12345") is listening on localhost and client is trying to connect by IP.

Try connecting client on localhost

  1. net.Dial("tcp", "localhost:12345")

Or listen the server on 0.0.0.0

  1. net.Listen("tcp", "0.0.0.0:12345")

huangapple
  • 本文由 发表于 2022年8月13日 00:59:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/73337541.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定