
go web编程
crushcoding
爱好golang 大家一起加油啊
展开
-
gin会话控制
gin中使用cookie:这里需要了解的是cookie是服务端创建传给客户端,然后客户端在收到cookie之后,每一次向服务端请求的时候,都会带上cookie,这样服务端就能得到客户端的信息,而且不需要客户端每一次都去传递。func main() { // 1.创建路由 // 默认使用了2个中间件Logger(), Recovery() r := gin.Default() // 服务端要给客户端cookie r.GET("cookie", func(c *gin.Cont原创 2021-08-26 11:02:01 · 246 阅读 · 0 评论 -
gin中间件
gin定义一个全局的中间件,需要了解的是定义中间件的语法,并且在定义完中间件之后还需要区注册中间件。注册使用的是r.use()。而且在中间件中使用.set方法可以在后面注册的路由中使用.get来获取。// 定义中间func MiddleWare() gin.HandlerFunc { return func(c *gin.Context) { t := time.Now() fmt.Println("中间件开始执行了") // 设置变量到Cont原创 2021-08-26 09:43:47 · 361 阅读 · 0 评论 -
gin渲染
当我们使用gin框架需要解析一些其他格式的数据的时候,可以这样写代码:也就是在服务端对客户端发送信息的响应。// 多种响应方式func main() { // 1.创建路由 // 默认使用了2个中间件Logger(), Recovery() r := gin.Default() // 1.json r.GET("/someJSON", func(c *gin.Context) { c.JSON(200, gin.H{"message": "som原创 2021-08-26 09:14:48 · 191 阅读 · 0 评论 -
gin数据的解析与绑定
json数据的解析与绑定当客户端传入参数的时候,后端解析并绑定这个参数。用代码来表示:// 定义接收数据的结构体type Login struct { // binding:"required"修饰的字段,若接收为空值,则报错,是必须字段 User string `form:"username" json:"user" uri:"user" xml:"user" binding:"required"` Pssword string `form:"password" json:"原创 2021-08-26 08:56:08 · 643 阅读 · 0 评论 -
gin的路由详解
gin最简单的实践:func main() { // 1.创建路由 r := gin.Default() // 2.绑定路由规则,执行的函数 // gin.Context,封装了request和response r.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "hello World!") }) // 3.监听端口,默认在8080 // Run("里面不指定端口号默认为8080原创 2021-08-26 08:31:16 · 4383 阅读 · 0 评论 -
go语言解决TCP黏包
为什么会出现粘包?1.由Nagle算法造成的发送端的粘包:Nagle算法是一种改善网络传输效率的算法。简单来说就是当我们提交一段数据给TCP发送时,TCP并不立刻发送此段数据,而是等待一小段时间看看在等待期间是否还有要发送的数据,若有则会一次把这两段数据发送出去。2.接收端接收不及时造成的接收端粘包:TCP会把接收到的数据存在自己的缓冲区中,然后通知应用层取数据。当应用层由于某些原因不能及时的把TCP的数据取出来,就会造成TCP缓冲区中存放了几段数据。解决办法出现”粘包”的关键在于接收方不确定将要传原创 2021-08-24 17:02:38 · 656 阅读 · 0 评论 -
go 实现udp通信
udp:不需要建立连接就能直接进行数据发送和接收,属于不可靠的、没有时序的通信,但是UDP协议的实时性比较好,通常用于视频直播相关领域。服务端实现代码:先创建一个用来连接的端口然后直接可以进行写或者读数据func main() { listen, err := net.ListenUDP("udp", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 30000, }) if err原创 2021-08-24 16:40:11 · 3226 阅读 · 0 评论 -
go web编程
go语言实现tcp的服务端:先要监听一个指定的端口接收客户端请求建立链接创建goroutine处理链接(这是因为在网络中一般会处理很多条的数据,使用goroutine会快很多)下面是最基本的tcp服务端的建立:// TCP server端// 处理函数func process(conn net.Conn) { defer conn.Close() // 关闭连接 for { reader := bufio.NewReader(conn)原创 2021-08-24 16:29:04 · 90 阅读 · 0 评论