网站首页 返回列表 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
TODO:Golang语言TCP/UDP协议重用地址端口
TODO:Golang语言TCP/UDP协议重用地址端口这是一个简单的包来解决重用地址的问题。gonet包(据我所知)不允许设置套接字选项。这在尝试进行TCPNAT时尤其成问题,其需要在同一TCP端口上进行侦听和拨号的过程。这个包使我有可能实现这个功能。这是一个非常小众的用例,但也许这个软件包可以随着时间的推移变得更普...
阅读全文
64行代码实现零拷贝go的TCP拆包粘包
64行代码实现零拷贝go的TCP拆包粘包前言这段时间想用go写一个简单IM系统,就思考了一下go语言TCP的拆包粘包。TCP的拆包粘包有一般有三种解决方案。使用定长字节实际使用中,少于固定字长的,要用字符去填充,空间使用率不够高。使用分隔符一般用文本传输的,使用分隔符,IM系统一般对性能要求高,不推荐使用文本传输。用消...
阅读全文
go语言实现TCP端口转发
有些时候项目会碰到需要端口转发的需求,比如:1.一个服务发布在公共端口上,客户端进来的请求需要转发到另一个本地端口,或者另一台主机;或者2.一个公共服务需要转到到多台内部服务上,轮询,按优先级等;或者3.一个服务请求进来之前需要做请求检查,例如安全功能参数等检查,类似网关功能,只有验证通过的请求才能发送给实际服务器。4...
阅读全文
golang 网络编程(2)TCP
golang_real.jpgTCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。说到网络编程我们先理解一个术语**套接字**,突破这个术语,我们就向理解TCP迈出了一大步。简单比喻一下吧,我们彼此间通过打电话或...
阅读全文
go语言TCP连接池rocket049/connpool使用
安装:goget-v-ugithub.com/rocket049/connpoolgoget-v-ugitee.com/rocket049/connpool`rocket049/connpool`包是本人用go语言开发的,提供一个通用的TCP连接池,初始化参数包括最高连接数、超时秒数、连接函数,放回连接池的连接被重新取...
阅读全文
golang tcp 编程
打开链接TCPSocket的连接的建立需要经历客户端和服务端的三次握手的过程。连接建立过程中,服务端是一个标准的Listen+Accept的结构(可参考上面的代码),而在客户端Go语言使用net.Dial或DialTimeout进行连接建立:阻塞Dial:__conn,err:=net.Dial("tcp","goog...
阅读全文
基于gnet网络框架构建具体的tcp server
网络框架是一个很优秀的高性能tcp网络编程框架,但是目前还没有针对常见的场景给出一些编程demo,我自己实现了一些代码库地址server_on_gnet基于gnet网络框架编写的各种常见服务端server程序,可以用来学习和快速使用目前支持的协议类型固定协议头大小,消息体不定长协议支持tcp_fixed_head_se...
阅读全文
GoLang实现TCP协议客户端和服务端
TCP客户端:__//TCPClient端设计//使用命令行启动*.exe127.0.0.1:5000packagemainimport("fmt""net""os""time")funcmain(){varbuf[512]byteiflen(os.Args)!=2{fmt.Fprintf(os.Stderr,"Usa...
阅读全文