这是我的代码: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 关注
- 146 浏览
添加回答
举报
0/150
提交
取消