這是我的代碼: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 ,因此您無需擔心。
- 2 回答
- 0 關注
- 174 瀏覽
添加回答
舉報
0/150
提交
取消