这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战
如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人专栏
Golang 实现 TCP代理
tcp代理实现
- 参照http.util.ReverseProxy 实现,服务与代理逻辑分离
- 构建一个tcp服务器,核心代码
- 构建一个tcp代理,核心代码
- tcp服务器与tcp代理结合,实现基于负载均衡的代理
构建一个tcp服务器
核心代码地址github.com/coderdao/ga…
构建一个tcp服务器步骤: 1、监听服务 2、获取构建新连接对象并设置超时时间及keepalive 3、设置方法退出时连接关闭 4、调用回调接口TcpHandler
var (
addr = ":2002"
)
type tcpHandler struct {
}
func (t *tcpHandler) ServeTCP(ctx context.Context, src net.Conn) {
src.Write([]byte("tcpHandler\n"))
}
//tcp服务器测试
log.Println("Starting tcpserver at " + addr)
tcpServ := tcp_proxy.TcpServer{
Addr: addr,
Handler: &tcpHandler{},
}
fmt.Println("Starting tcp_server at " + addr)
tcpServ.ListenAndServe()
测试 telnet 127.0.0.1 2002
构建一个tcp代理
核心代码地址github.com/coderdao/ga…
构建一个tcp反向代理步骤: 1、代理实现TcpHandler回调方法结构 2、连接下游服务信 3、设置退出时关闭连接 4、—边读数据─边写数据
//thrift代理测试
rb := load_balance.LoadBanlanceFactory(load_balance.LbWeightRoundRobin)
rb.Add("127.0.0.1:7002", "100")
proxy := proxy.NewTcpLoadBalanceReverseProxy(&tcp_middleware.TcpSliceRouterContext{}, rb)
tcpServ := tcp_proxy.TcpServer{Addr: addr, Handler: proxy,}
fmt.Println("Starting tcp_proxy at " + addr)
tcpServ.ListenAndServe()
win 开启 telnet 命令
一般情况下,TCP 测试方法
和 http 测试
直接访问地址能不能返回成功的方式并不一样。
开发过程中更多依赖于 Telnet
功能测试端口是否可用。
如果是 mac/linux 直接命令安装即可。而 window 则可以在设置中,查询 启动或关闭windows功能
的列表中 打开 Telnet
即可使用
使用命令测试 telnet 127.0.0.1 7002
今天的文章Golang 实现 TCP代理分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/16673.html