阅读 1572

Golang 实现 TCP代理

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人专栏

Golang 实现 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

文章分类
后端
文章标签