一、概述 前面已经完成了一个完美的多并发CS模型,但美中不足的是没有解决粘包问题。 1.1 什么是粘包问题? 在网络传输中,数据都是通过数据流来传输的,也就是以比特来传输。传输的过程中我们可能会遇到各...
Golang的socket编程(三):并发Server-Client
一、概述 上一篇实现了一个server和client通信,完成了小写转大写的功能,但是是一个单任务式的响应:客户端发送连接接收响应,程序结束;服务端则接收数据响应数据也结束!就实际需要而言,并没有很大...
Golang的socket编程(二):简单client-server
一、概述 上一篇介绍了基本的函数和结构类型,这里就可以开始写服务端和客户端通信小程序了,通信的基本的流程如下: 如果服务端使用Listen来监听,那么可以不用ResolveTCPAddr函数。 现在我...
Golang的socket编程(一):常用数据结构和函数介绍
工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬...
Golang slice的使用方法及注意事项
一、说明 切片(slice)是golang里面的可变长元素类型,不是数组或数组指针,本质是一个结构体。 slice的声明如下(位于安装目录下的src/runtime/slice.go): [crayo...
Golang中JSON解析结构体
一、StructTag介绍 StructTag是go语言结构体中的一个标记字段,放在字段声明的后面,一般只有特定情况下会用到,如json的转化。 使用的时候只要把标记的字段用两个`包起来即可,标签内的...
Golang中net/http包使用方法之http.Header
一、说明 http.Header结构包含请求头信息,官方定义如下,其实就是一个map[string][]string结构: [crayon-6627efc747cd3712582148/] 二、常用方...
Golang中net/http包使用方法之http.Response
一、说明 http.Response是我们请求服务器之后得到的响应数据,结构如下: [crayon-6627efc748670383007803/] 其中常用的属性说明如下: Status:响应状态,...
Golang中range的使用方法及注意事项
一、用法 range类似迭代器,可以遍历数组,字符串,map等等,对象的不同,返回的结果也不同。 [crayon-6627efc748fc6026954523/] 结果: [crayon-6627ef...
Golang中的常量和枚举
一、常量 golang中的常量和其他语言里的常量大多相同,必须在编译期有确定的值。 [crayon-6627efc749957544469909/] 也可以使用常量组的形式来声明: [crayon-6...
2