- 博客(25)
- 收藏
- 关注
原创 go-server 一个在学习中形成的socket服务
go-server项目地址:https://github.com/zboyco/go-servergo-server 是我在学习golang的过程中,从最简单的socket一步一步改造形成的。目前功能如下:普通的tcp功能(废话)使用标准库bufio.Scanner实现拆包,可以直接使用bufio.Scanner内置的拆包协议提供普通OnMessage和命令路由两种使用模式采用实现...
2020-02-14 17:40:44
940
原创 Go实现简单的Socket服务端笔记(十)
添加Session容器,增加超时自动关闭Session功能本文代码查看github:https://github.com/zboyco/go-server/tree/step-10要实现超时管理,就需要有个地方保存所有的会话(session),我们采用 map 来存储所有的 session ,因为 session 的保存不需要顺序,同时也有删除和增加的功能,map 正好适合.增加一个池结构...
2020-02-13 15:08:10
241
原创 Go实现简单的Socket服务端笔记(九)
采用标准库scanner实现数据分离处理粘包参考http://feixiao.github.io/2016/05/08/bufio/使用标准库scanner实现数据分离处理粘包本文代码查看github:https://github.com/zboyco/go-server/tree/step-9直接使用scanner处理粘包,不用管理buffer,相对更加简单修改socket.go中...
2020-02-13 15:07:29
325
原创 Go实现简单的Socket服务端笔记(八)
session中Read方法实现粘包拆包处理定义简单协议,数据包头由4字节构成:第1位固定为’$’第2-3位为Body长度(uint16)第4位固定为’#’接收数据时若第1位和第4位不正确则认为接收到异常数据,同时关闭socket连接本文代码查看github:https://github.com/zboyco/go-server/tree/step-8为了实现粘包拆包处理,我们自...
2020-02-13 15:05:41
389
原创 Go实现简单的Socket服务端笔记(七)
Session增加唯一ID,拆分socket中的Read方法增加ID为了以后判断闲置超时; 拆分Read方法方便扩展协议本文代码查看github:https://github.com/zboyco/go-server/tree/step-7修改AppSession结构体,增加ID和activeDateTime属性,为超时管理做准备//客户端结构体type AppSession st...
2020-02-13 15:04:47
297
原创 Go实现简单的Socket服务端笔记(六)
增加AppSession结构体OnMessage返回AppSession结构体,提供Send方法,服务器可以主动向客户端发送数据本文代码查看github:https://github.com/zboyco/go-server/tree/step-6新建一个AppSession结构体,将客户端会话放在AppSession中,方便扩展和管理在server目录中增加client.go文件代...
2020-02-13 15:04:08
244
原创 Go实现简单的Socket服务端笔记(五)
将读取的数据处理方法作为参数传入server中将 OnMessage 和 OnError 通过Server结构公开变量传入本文代码查看github:https://github.com/zboyco/go-server/tree/step-5项目结构如下:|-go-server|-server |-socket.gosocket.go 中,Server结构增加两个方法,用来输出接...
2020-02-13 15:03:33
255
原创 Go实现简单的Socket服务端笔记(四)
将创建socket的方法放入单独的包中本文代码查看github:https://github.com/zboyco/go-server/tree/step-4修改以下项目结构,将之前的代码放到server包中,main.go中直接调用就行了项目结构如下:|-go-server|-server |-socket.gosocket.go 中增加一个结构体,增加一个工厂函数用来返回一个...
2020-02-13 15:02:54
241
1
原创 Go实现简单的Socket服务端笔记(三)
利用goroutine实现同时多个客户端连接将数据读取放入单独的方法中,利用goroutine运行本文代码查看github:https://github.com/zboyco/go-server/tree/step-3要实现多个客户端连接,需要将每个客户端放入单独的线程处理,通常我们使用多线程实现这个功能,但Go语言提供的 goroutine, 可以非常方便的实现并行(goroutine并...
2020-02-13 15:02:20
278
原创 Go实现简单的Socket服务端笔记(二)
第二步 循环读取数据利用for循环,等待客户端发送数据本文代码查看github:https://github.com/zboyco/go-server/tree/step-2修改上一步的代码,让服务端循环接收客户端发送的消息,主要使用for循环,直接上代码package mainimport ( "fmt" "net")func main() { //定义一个本机端口...
2020-02-13 15:01:26
234
原创 Go实现简单的Socket服务端笔记(一)
###第一步 实现socket服务简单实现一个socket服务,能接收客户端连接并接收数据本文代码查看github:https://github.com/zboyco/go-server/tree/step-1Go语言的socket服务由标准库 net 提供,主要就使用三个方法.ResolveTCPAddr用于获取一个TCPAddrListenTCP开始监听Accep...
2020-02-13 15:00:46
514
原创 Go实现简单的Socket服务端笔记(零)
说明最近开始学习Go语言,尝试写一个简单的Socket服务端,计划实现以下一些功能:监听单个端口,支持多个客户端连接定义简单的协议,实现粘包拆包处理能设置会话闲置超时时间,周期性关闭超时的会话记录会话连接,关闭,错误日志还没想好下面一步步的实现吧,我是新手项目地址:https://github.com/zboyco/go-server...
2020-02-12 18:54:00
222
原创 Android Post文件到服务器问题记录
该篇记录的程序,使用的网络上的一段代码,只是在使用过程中出现问题,所以记录下来,方便以后使用,原程序地址如下:http://greatverve.cnblogs.com/archive/2011/12/23/android-upload.html问题:执行到 conn.getOutputStream() 时,抛出IO错误。解决:Android 从4.0 开始,对于网络数据的操作,必
2014-12-07 20:36:51
518
原创 Android Studio 中 View 的 setOnClickListener 添加方法(不能用this)
第一种,单个View各自添加:
2014-10-31 08:53:19
20010
5
原创 json.net 对象序列化和反序列化
公司项目需要用到JSON来存储数据,于是使用了JSON.NET,记录一下,方便下一次使用:public struct DataStructInfo { /// /// 字段名称 /// public string Name; /// /// 字段标签 ///
2014-10-11 15:15:34
524
原创 Android WebView addJavascriptInterface无效原因
webSettings.setJavaScriptEnabled(true); mWebView.addJavascriptInterface(new Object() { @JavascriptInterface public void clickMoreOnAndroid() { mHandler.
2014-09-29 14:24:08
6695
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人