我是新手,我正在尝试使用go语言准备客户端服务器并尝试编写代码,但是没有给出任何输出。它没有发出任何错误,只是在听。请有人帮助我,我想使用go创建身份验证系统,其中服务器使用用户名密码对客户端进行身份验证。服务器 :package mainimport ( "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 mainimport ( "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()) }}
2 回答
德玛西亚99
TA贡献1770条经验 获得超3个赞
我不确定您是否需要解析您的地址才能收听。
您应该能够做到这一点:
listener, err := net.Listen("tcp", ":8080")
而且您似乎对接收的字节服务器端不做任何事情(丢弃的结果Read
),这解释了为什么您认为自己什么也没收到。
请注意,您的代码一次只能处理一个连接。您应该在新的goroutine中处理每个打开的连接。
这是相关问题中通过TCP进行客户端-服务器通信的示例。
- 2 回答
- 0 关注
- 224 浏览
添加回答
举报
0/150
提交
取消