亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Golang 構建服務器但在客戶端有問題

使用 Golang 構建服務器但在客戶端有問題

Go
慕娘9325324 2021-08-16 15:38:43
這是我的代碼:package mainimport (        "fmt"        "net"        "net/http"        "os")const RECV_BUF_LEN = 1024func handler(w http.ResponseWriter, r *http.Request) {        fmt.Fprint(w, "Test")}func main() {        http.HandleFunc("/", handler)        s := &http.Server{Addr: ":8080", Handler: nil}        listener, err := net.Listen("tcp", s.Addr)        if err != nil {                fmt.Println("Error: ", err.Error())                fmt.Println("Close Server")                os.Exit(1)        }        for {                conn, err := l.Accept()                if err != nil {                        fmt.Println("Error: ", err.Error())                        continue                }                go ClientLogic(conn)        }}func ClientLogic(conn net.Conn) {        fmt.Println("Connect Successful")        conn.Close()}我知道我可以使用以下代碼來構建服務器,但我想做一些事情,例如打印一些數據。http.HandleFunc("/", handler)http.ListenAndServe(":8080", nil)當代碼運行時,服務器端可以成功打印“連接成功”。但是,它不會在客戶端顯示任何內容。換句話說,客戶端的瀏覽器顯示任何內容并繼續加載,但服務器端可以顯示連接成功的消息。PS:代碼參考http://lolikitty.pixnet.net/blog/post/148420590和golang的源碼(http://golang.org/src/pkg/net/http/server.go?s=50405 :50451#L1684 )
查看完整描述

2 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

您應該使用處理程序或接受,但如果您使用接受,這將被處理新連接,而您將忽略處理程序。您將進入 http 連接的較低抽象級別。


這段代碼按您的預期工作:


package main


import (

    "fmt"

    "net/http"

)


func handler(w http.ResponseWriter, r *http.Request) {

    fmt.Fprint(w, "Test")

    fmt.Println("Connect Successful")

}


func main() {

    http.HandleFunc("/", handler)

    http.ListenAndServe(":8080", nil)

}

當您調用ListenAndServe 時,他會做出正確的 Accept ,因此您無需擔心。


查看完整回答
反對 回復 2021-08-16
  • 2 回答
  • 0 關注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號