golang http server通过socket发送r.URL.Path

时间:2017-05-14 17:53:08

标签: go

我有一个http服务器,我想使用套接字将r.URL.Path文本发送到客户端

我收到错误:undefined:conn中的conn.Write 这是因为conn在另一个函数中定义

我尝试过:

package main

import (
    "net"
    "io"
    "net/http"
)


ln, _ := net.Listen("tcp", ":8081")
conn, _ := ln.Accept()

func hello(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello world!")
    conn.Write([]byte(r.URL.Path + "\n")) //Here I'm attemping to send it
}

func main() {


    http.HandleFunc("/", hello)
    http.ListenAndServe(":8000", nil)
}

1 个答案:

答案 0 :(得分:1)

您的问题实际上是您尝试声明变量的方式 如果您希望conn在全球范围内,请使用var

package main

import (
    "io"
    "net/http"
    "net"
)


var ln, _ = net.Listen("tcp", ":8081")
var conn, _ = ln.Accept()

func hello(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello world!")
    conn.Write([]byte(r.URL.Path + "\n")) //Here I'm attemping to send it
}

func main() {
    http.HandleFunc("/", hello)
    http.ListenAndServe(":8000", nil)
}