我是新手,我正在嘗試使用go語言準備客戶端服務器并嘗試編寫代碼,但是沒有給出任何輸出。它沒有發(fā)出任何錯誤,只是在聽。請有人幫助我,我想使用go創(chuàng)建身份驗證系統(tǒng),其中服務器使用用戶名密碼對客戶端進行身份驗證。服務器 :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條經(jīng)驗 獲得超3個贊
我不確定您是否需要解析您的地址才能收聽。
您應該能夠做到這一點:
listener, err := net.Listen("tcp", ":8080")
而且您似乎對接收的字節(jié)服務器端不做任何事情(丟棄的結(jié)果Read
),這解釋了為什么您認為自己什么也沒收到。
請注意,您的代碼一次只能處理一個連接。您應該在新的goroutine中處理每個打開的連接。
這是相關(guān)問題中通過TCP進行客戶端-服務器通信的示例。
- 2 回答
- 0 關(guān)注
- 246 瀏覽
添加回答
舉報
0/150
提交
取消