12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package mux
- import (
- "github.com/cnlh/nps/lib/common"
- conn3 "github.com/cnlh/nps/lib/conn"
- "github.com/cnlh/nps/vender/github.com/astaxie/beego/logs"
- "log"
- "net"
- "net/http"
- _ "net/http/pprof"
- "testing"
- "time"
- )
- var conn1 net.Conn
- var conn2 net.Conn
- func TestNewMux(t *testing.T) {
- go func() {
- http.ListenAndServe("0.0.0.0:8899", nil)
- }()
- logs.EnableFuncCallDepth(true)
- logs.SetLogFuncCallDepth(3)
- server()
- client()
- time.Sleep(time.Second * 3)
- go func() {
- m2 := NewMux(conn2)
- for {
- c, err := m2.Accept()
- if err != nil {
- log.Fatalln(err)
- }
- go func(c net.Conn) {
- c2, err := net.Dial("tcp", "127.0.0.1:8080")
- if err != nil {
- log.Fatalln(err)
- }
- go common.CopyBuffer(c2, conn3.NewCryptConn(c, true, nil))
- common.CopyBuffer(conn3.NewCryptConn(c, true, nil), c2)
- c.Close()
- c2.Close()
- }(c)
- }
- }()
- go func() {
- m1 := NewMux(conn1)
- l, err := net.Listen("tcp", "127.0.0.1:7777")
- if err != nil {
- log.Fatalln(err)
- }
- for {
- conn, err := l.Accept()
- if err != nil {
- log.Fatalln(err)
- }
- go func(conn net.Conn) {
- tmpCpnn, err := m1.NewConn()
- if err != nil {
- log.Fatalln(err)
- }
- go common.CopyBuffer(conn3.NewCryptConn(tmpCpnn, true, nil), conn)
- common.CopyBuffer(conn, conn3.NewCryptConn(tmpCpnn, true, nil))
- conn.Close()
- tmpCpnn.Close()
- }(conn)
- }
- }()
- for {
- time.Sleep(time.Second * 5)
- }
- }
- func server() {
- var err error
- l, err := net.Listen("tcp", "127.0.0.1:9999")
- if err != nil {
- log.Fatalln(err)
- }
- go func() {
- conn1, err = l.Accept()
- if err != nil {
- log.Fatalln(err)
- }
- }()
- return
- }
- func client() {
- var err error
- conn2, err = net.Dial("tcp", "127.0.0.1:9999")
- if err != nil {
- log.Fatalln(err)
- }
- }
|