猿问

如何用Go语言创建客户端服务器?

我是新手,我正在尝试使用go语言准备客户端服务器并尝试编写代码,但是没有给出任何输出。它没有发出任何错误,只是在听。


请有人帮助我,我想使用go创建身份验证系统,其中服务器使用用户名密码对客户端进行身份验证。


服务器 :


package main


import (

        "fmt"

        "net"

)


func main() {

        service := "0.0.0.0:8080"

        tcpAddr, err := net.ResolveTCPAddr("tcp", service)

        checkError(err)

        listener, err := net.ListenTCP("tcp", tcpAddr)

        checkError(err)

        for {

                conn, err := listener.Accept()

                //fmt.Println("Server listerning")

                _, err = conn.Read([]byte("HEAD"))

                if err != nil {

                        conn.Close()

                }

                if err != nil {

                        continue

                }

        }

}


func checkError(err error) {

        if err != nil {

                fmt.Println("Fatal error ", err.Error())

        }

}

客户 :


package main


import (

        "bufio"

        "fmt"

        "net"

        "os"

        "strings"

)


func main() {

        if len(os.Args) != 2 {

                fmt.Println("Usage: ", os.Args[0], "host")

                os.Exit(1)

        }

        host := os.Args[1]

        conn, err := net.Dial("tcp", host+":8080")

        checkError(err)

        _, err = conn.Write([]byte("HEAD"))

        reader := bufio.NewReader(os.Stdin)

        for {

                line, err := reader.ReadString('\n')

                ftm.Println(err)

                line = strings.TrimRight(line, " \t\r\n")

                if err != nil {

                        conn.Close()

                        break


                }

        }

}

func checkError(err error) {

        if err != nil {

                fmt.Println("Fatal error ", err.Error())

        }

}


紫衣仙女
浏览 225回答 2
2回答

德玛西亚99

我不确定您是否需要解析您的地址才能收听。您应该能够做到这一点:listener, err := net.Listen("tcp", ":8080")而且您似乎对接收的字节服务器端不做任何事情(丢弃的结果Read),这解释了为什么您认为自己什么也没收到。请注意,您的代码一次只能处理一个连接。您应该在新的goroutine中处理每个打开的连接。这是相关问题中通过TCP进行客户端-服务器通信的示例。
随时随地看视频慕课网APP

相关分类

Go
我要回答