golang tcp 2 unix socket proxy
来源:互联网 发布:淘宝创建追评失败 编辑:程序博客网 时间:2024/06/06 03:19
想将mysql 的TCP 封死,所有外部链接由我的proxy来控制,so 写了一个 tcp 转 unix socket 的 proxy。
package mainimport ("os""fmt""net""io""sync""time")type proxy struct{Host stringPort stringLocal string}func runProxy(list []proxy) {wg := sync.WaitGroup{}for _, v := range list {wg.Add(1)go func() {eachServer(v.Host, v.Port, v.Local)wg.Done()}()}wg.Wait()}func eachServer(host string, port string, local string) {l,err := net.Listen("tcp", fmt.Sprintf("%s:%s", host, port))if err != nil {fmt.Print("listen tcp :%s",err.Error())os.Exit(1)}defer l.Close()for {tc,err := l.Accept()if err != nil {fmt.Printf("accept tcp conn :%s",err.Error())tc.Close()continue}go eachConn(local, tc)}}func eachConn(local string, tc net.Conn) {uc,err := net.Dial("unix", local)if err != nil {fmt.Printf("get unix conn :%s",err.Error())uc.Close()return}go io.Copy(tc, uc)go io.Copy(uc, tc)}func main() {list := []proxy{proxy{Host:"192.168.8.101",Port:"3306",Local:"/home/work/data/tmp/mysql3306.sock"}}runProxy(list)}
3 0
- golang tcp 2 unix socket proxy
- golang中net包用法(三)--TCP和UDP以及Unix domain socket
- golang http client使用unix domain socket
- Golang Socket Tcp 连接优雅关闭
- unix c++的socket编程(TCP)
- golang中tcp socket粘包问题和处理
- golang中tcp socket粘包问题和处理
- golang中tcp socket粘包问题和处理
- Remote Connection via Proxy Server in TCP/IP Socket
- golang tcp
- Golang---TCP
- tcp proxy
- TCP的socket连接示例(win/unix 非阻塞)
- 【Unix 网络编程】TCP Socket 编程基础(0)
- 【Unix 网络编程】TCP 客户/服务器简单 Socket 程序
- UNIX网络编程:socket套接字(TCP与UDP)
- linux C ----- udp, tcp, unix socket通信简单例子
- TCP-socket(2)
- 再谈p2p投融资真相
- iOS 类文件重命名操作步骤
- DICOM入门简介
- Objective-C中的日期格式器NSDateFormatter
- 【js报类型未定义的错误】20140826
- golang tcp 2 unix socket proxy
- synchronized用法
- 自己动手写CPU之第七阶段(5)——流水线暂停机制的设计与实现
- Android手机在开发调试时logcat不显示输出信息的解决办法
- NSAttributedString的用法
- C#学习笔记-委托
- SQL中left join和inner join配合使用
- 斯坦福大学公开课——傅里叶变换及其应用笔记
- Comparable和Comparator2个接口的作用和区别