做一个简单的server,每到来一个连接,就启用一个新的 goroutine 来进行处理

Go: 网络服务编程入门
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
func main() {
ln, err := net.Listen("tcp", ":8080")
checkError(err)
for {
conn, err := ln.Accept()
if err != nil {
continue
}
go run(conn)
}
}
func run(conn net.Conn) {
buffer := make([]byte, 1024)
defer conn.Close()
for {
n, err := conn.Read(buffer)
if err != nil {
return
}
fmt.Println("read:", string(buffer[:n]))
}
}
|
本文网址: https://golangnote.com/topic/153.html 转摘请注明来源
Related articles
Golang 的网络服务,如果不指定IPv4 或 IPv6,如果VPS 同时支持 IPv4 和 IPv6,`net.Listen()` 只会监听 IPv6 地址。但这不影响客户端使用 IPv4 地址来访问。...
Golang 有很多的模版引擎,自带的 `html/template` 也很好,大多数情况都能满足需求,只是有些逻辑、条件判断不好在模版里实现, `quicktemplate` 是个很好的选择。...
bolt 是高性能的kv 嵌入式数据库,很适合用在微服务上,下面是goji + bolt 写的短网址服务。...
Go 语言内置的 `sort` 库可以对各种列表排序,这里是按 string slice 里的字符串长度排序。...
在 golang 里判断字符串是否相等,最简单的方法就是用`==`判断,如果要提高性能,就使用`strings.Compare`。...
golang 的go build、go install 命令都是可生成可实行文件,了解它们的小区别以选择适合自己的。...
Safari 有个阅读模式,可以识别正文内容并重新排版,重新设置样式,让页面简洁,其中最核心的东西是正文内容识别部分。如下图...
关于优雅关闭 grace shutdown 网上有很多例子,特别是 http 服务的优雅关闭/重启,但这里讲的是非在线应用优雅关闭。...
推荐几个chrome debug protocol 库,直接面向 chrome debug protocol api...
在网络编程中,经常用 http.Post 发送文件到远程服务器,可以通过自己构造 `multipart/form-data; boundary` 来实现。...