用GO写一个HTTP Server
时间: 2023-03-24 21:00:46 浏览: 60
好的,下面是一个用Go语言编写的HTTP服务器的基本代码示例:
```go
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World!")
}
```
这段代码使用Go语言内置的`net/http`包创建了一个基本的HTTP服务器,监听8080端口,然后处理所有请求并返回“Hello, World!”作为响应。
我们使用`http.HandleFunc`函数将处理函数`handler`与根路径“/”进行关联。当客户端向服务器发送请求时,处理函数将被调用,并向客户端发送一个简单的响应。最后,我们使用`log.Fatal`函数启动服务器并将其保持在运行状态,以便可以接收并处理传入的请求。
相关问题
用golang 写一个ftpserver
可以使用第三方库 "github.com/goftp/server" 来实现一个 FTP 服务器。
示例代码如下:
```
package main
import (
"log"
"github.com/goftp/server"
)
func main() {
// 配置服务器
opts := &server.ServerOpts{
Name: "gofpt",
Welcome: "welcome to goftp",
Auth: &server.SimpleAuth{Name: "test", Password: "test"},
Factory: &server.DriverFactory{},
PassivePort: 3000,
}
// 创建 FTP 服务器
ftpServer := server.NewServer(opts)
// 启动 FTP 服务器
err := ftpServer.ListenAndServe()
if err != nil {
log.Fatal("Error starting server:", err)
}
}
```
这里是一个简单的FTP服务器,使用用户名“test”和密码“test”进行身份验证。
更多细节可以参考库的文档 https://github.com/goftp/server
用golang写一个具有下载功能的http server
很高兴为您解答。Golang可以很容易地编写一个具有下载功能的HTTP服务器,只需要几行代码即可实现。可以使用net/http包来实现,下面是一个示例:package mainimport (
"fmt"
"io"
"net/http"
)func downloadFile(w http.ResponseWriter, r *http.Request) { // Set the file name and content type
fileName := "name-of-file.pdf"
w.Header().Set("Content-Type", "application/octet-stream")
w.Header().Set("Content-Disposition", "attachment; filename="+fileName) // Create a buffer to store our output
buffer := make([]byte, 4096) // Open the file
file, err := os.Open(fileName)
if err != nil {
fmt.Println(err)
}
defer file.Close() // Read the file into the buffer
for {
n, err := file.Read(buffer)
if err != nil && err != io.EOF {
fmt.Println(err)
return
}
if n == 0 {
break
} // Write the buffer to the client
if _, err := w.Write(buffer[:n]); err != nil {
fmt.Println(err)
return
}
}
}func main() {
http.HandleFunc("/", downloadFile)
http.ListenAndServe(":8080", nil)
}