
go学习
学习go的记录
shuaihao1
这个作者很懒,什么都没留下…
展开
-
http代理基础
反向代理下游服务器,真实的服务器实现package mainimport ( "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 · 416 阅读 · 0 评论 -
网络基础小记(二)
go创建udp的客户端和服务端package mainimport ( "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 · 646 阅读 · 0 评论 -
网络基础小记(一)
TCP为啥需要三次握手、四次挥手三次握手的最主要的目的是保证链接是双工的,可靠性更多是通过重传机制来保证的因为连接是全双工的,双方必须都收到对方的FIN包及确认才可以关闭[s] 是seq包; [S.]是ack包; [P]是数据包; [F]是fin包为什么time_wait需要等待2MSL保证TCP协议的全双工连接能够可靠关闭保证这次连接的重复数据段从网络中消失为啥会出现大量close_wait首先close_wait一般出现在被动关闭方并发请求太多导致被动关闭方未原创 2022-04-28 00:48:13 · 2099 阅读 · 0 评论 -
一个简单的http的web代理服务器demo
package mainimport ( "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 · 124 阅读 · 0 评论