go学习
学习go的记录
shuaihao1
这个作者很懒,什么都没留下…
展开
-
http代理基础
反向代理 下游服务器,真实的服务器实现 package main import ( "fmt" "io" "log" "net/http" "os" "os/signal" "syscall" "time" ) func main() { rs1 := &RealServer{Addr: "127.0.0.1:2003"} rs1.Run() rs2 := &RealServer{Addr: "127.0.0.1:2004"} rs2.Run() //监听关原创 2022-05-03 14:34:48 · 338 阅读 · 0 评论 -
网络基础小记(二)
go创建udp的客户端和服务端 package main import ( "fmt" "net" ) func main() { //step 1 监听服务器 listen, err := net.ListenUDP("udp", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 9090, }) if err != nil { fmt.Printf("listen failed, err:%v\n", err) ret原创 2022-05-03 11:41:14 · 586 阅读 · 0 评论 -
网络基础小记(一)
TCP为啥需要三次握手、四次挥手 三次握手的最主要的目的是保证链接是双工的,可靠性更多是通过重传机制来保证的 因为连接是全双工的,双方必须都收到对方的FIN包及确认才可以关闭 [s] 是seq包; [S.]是ack包; [P]是数据包; [F]是fin包 为什么time_wait需要等待2MSL 保证TCP协议的全双工连接能够可靠关闭 保证这次连接的重复数据段从网络中消失 为啥会出现大量close_wait 首先close_wait一般出现在被动关闭方 并发请求太多导致 被动关闭方未原创 2022-04-28 00:48:13 · 2038 阅读 · 0 评论 -
一个简单的http的web代理服务器demo
package main import ( "fmt" "io" "net" "net/http" "strings" ) type Pxy struct{} func (p *Pxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) { fmt.Printf("Received request %s %s %s\n", req.Method, req.Host, req.RemoteAddr) transport := http原创 2022-04-27 00:44:09 · 85 阅读 · 0 评论