Это 25-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления
Если ❤️моя статья оказалась полезной, ставьте лайк и подписывайтесь. Это самый большой стимул для меня продолжать техническое творчество.Больше предыдущих статей в моей личной колонке
Golang реализует TCP-прокси
реализация tcp-прокси
- Ссылаясь на реализацию http.util.ReverseProxy, сервисная и прокси-логика разделены
- Создайте TCP-сервер, основной код
- Создайте прокси TCP, основной код
- Сервер tcp объединяется с прокси-сервером tcp для реализации прокси-сервера на основе балансировки нагрузки.
построить tcp-сервер
адрес основного кодаGitHub.com/coder в/карма…
Шаги для создания TCP-сервера: 1. Служба мониторинга 2. Получите и создайте новый объект подключения и установите тайм-аут и поддержку активности. 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/coder в/карма…
Шаги для создания обратного прокси-сервера 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 open telnet
В целом,TCP 测试方法
а такжеhttp 测试
Вопрос о том, может ли адрес прямого доступа возвращать успех, зависит от другого.
На что больше полагаются при разработкеTelnet
Порт функционального тестирования доступен.
Если это mac/linux, вы можете установить его напрямую с помощью команды. А окно можно в настройках запросить启动或关闭windows功能
открыть в спискеTelnet
готовые к использованию
Тест с командойtelnet 127.0.0.1 7002