diff --git a/client.go b/client.go index 8915d39..1a75c74 100644 --- a/client.go +++ b/client.go @@ -15,8 +15,8 @@ const ( RECV_PROTO int = 0 ) -func NewClient(addr string, server string, target string, timeout int, catch int, key int, - tcpmode int) (*Client, error) { +func NewClient(addr string, server string, target string, timeout int, key int, + tcpmode int, tcpmode_buffersize int, tcpmode_maxwin int, tcpmode_resend_timems int) (*Client, error) { var ipaddr *net.UDPAddr var tcpaddr *net.TCPAddr @@ -41,17 +41,19 @@ func NewClient(addr string, server string, target string, timeout int, catch int r := rand.New(rand.NewSource(time.Now().UnixNano())) return &Client{ - id: r.Intn(math.MaxInt16), - ipaddr: ipaddr, - tcpaddr: tcpaddr, - addr: addr, - ipaddrServer: ipaddrServer, - addrServer: server, - targetAddr: target, - timeout: timeout, - catch: catch, - key: key, - tcpmode: tcpmode, + id: r.Intn(math.MaxInt16), + ipaddr: ipaddr, + tcpaddr: tcpaddr, + addr: addr, + ipaddrServer: ipaddrServer, + addrServer: server, + targetAddr: target, + timeout: timeout, + key: key, + tcpmode: tcpmode, + tcpmode_buffersize: tcpmode_buffersize, + tcpmode_maxwin: tcpmode_maxwin, + tcpmode_resend_timems: tcpmode_resend_timems, }, nil } @@ -62,7 +64,6 @@ type Client struct { timeout int sproto int rproto int - catch int key int tcpmode int tcpmode_buffersize int @@ -89,9 +90,6 @@ type Client struct { recvPacket uint64 sendPacketSize uint64 recvPacketSize uint64 - - sendCatchPacket uint64 - recvCatchPacket uint64 } type ClientConn struct { @@ -167,24 +165,12 @@ func (p *Client) Run() { interval := time.NewTicker(time.Second) defer interval.Stop() - inter := 1000 - if p.catch > 0 { - inter = 1000 / p.catch - if inter <= 0 { - inter = 1 - } - } - intervalCatch := time.NewTicker(time.Millisecond * time.Duration(inter)) - defer intervalCatch.Stop() - for { select { case <-interval.C: p.checkTimeoutConn() p.ping() p.showNet() - case <-intervalCatch.C: - p.sendCatch() case r := <-recv: p.processPacket(r) } @@ -274,7 +260,7 @@ func (p *Client) AcceptTcpConn(conn *net.TCPConn) { p.sendPacketSize += (uint64)(len(mb)) sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, clientConn.id, (uint32)(MyMsg_DATA), mb, - SEND_PROTO, RECV_PROTO, p.catch, p.key, + SEND_PROTO, RECV_PROTO, p.key, p.tcpmode, p.tcpmode_buffersize, p.tcpmode_maxwin, p.tcpmode_resend_timems) } } @@ -317,7 +303,7 @@ func (p *Client) Accept() error { clientConn.activeTime = now sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, clientConn.id, (uint32)(MyMsg_DATA), bytes[:n], - SEND_PROTO, RECV_PROTO, p.catch, p.key, + SEND_PROTO, RECV_PROTO, p.key, p.tcpmode, p.tcpmode_buffersize, p.tcpmode_maxwin, p.tcpmode_resend_timems) p.sequence++ @@ -362,10 +348,6 @@ func (p *Client) processPacket(packet *Packet) { now := time.Now() clientConn.activeTime = now - if packet.my.Type == (int32)(MyMsg_CATCH) { - p.recvCatchPacket++ - } - _, err := p.listenConn.WriteToUDP(packet.my.Data, addr) if err != nil { loggo.Error("WriteToUDP Error read udp %s", err) @@ -411,7 +393,7 @@ func (p *Client) ping() { now := time.Now() b, _ := now.MarshalBinary() sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, "", (uint32)(MyMsg_PING), b, - SEND_PROTO, RECV_PROTO, p.catch, p.key, + SEND_PROTO, RECV_PROTO, p.key, p.tcpmode, p.tcpmode_buffersize, p.tcpmode_maxwin, p.tcpmode_resend_timems) loggo.Info("ping %s %s %d %d %d %d", p.addrServer, now.String(), p.sproto, p.rproto, p.id, p.sequence) p.sequence++ @@ -419,24 +401,10 @@ func (p *Client) ping() { } func (p *Client) showNet() { - loggo.Info("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s sendCatch %d/s recvCatch %d/s", - p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024, p.sendCatchPacket, p.recvCatchPacket) + loggo.Info("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s", + p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024) p.sendPacket = 0 p.recvPacket = 0 p.sendPacketSize = 0 p.recvPacketSize = 0 - p.sendCatchPacket = 0 - p.recvCatchPacket = 0 -} - -func (p *Client) sendCatch() { - if p.catch > 0 { - for _, conn := range p.localIdToConnMap { - sendICMP(p.id, p.sequence, *p.conn, p.ipaddrServer, p.targetAddr, conn.id, (uint32)(MyMsg_CATCH), make([]byte, 0), - SEND_PROTO, RECV_PROTO, p.catch, p.key, - p.tcpmode, p.tcpmode_buffersize, p.tcpmode_maxwin, p.tcpmode_resend_timems) - p.sequence++ - p.sendCatchPacket++ - } - } } diff --git a/framemgr.go b/framemgr.go index f5fd26d..5243d67 100644 --- a/framemgr.go +++ b/framemgr.go @@ -3,7 +3,6 @@ package pingtunnel import ( "container/list" "github.com/esrrhs/go-engine/src/rbuffergo" - "math/rand" "sync" "time" ) @@ -27,7 +26,7 @@ func NewFrameMgr(buffersize int, windowsize int, resend_timems int) *FrameMgr { fm := &FrameMgr{sendb: sendb, recvb: recvb, sendlock: &sync.Mutex{}, recvlock: &sync.Mutex{}, - windowsize: windowsize, win: list.New(), sendid: rand.Int() % (FRAME_MAX_ID + 1), + windowsize: windowsize, win: list.New(), sendid: 0, resend_timems: resend_timems, sendlist: list.New()} return fm diff --git a/msg.pb.go b/msg.pb.go index 69338f5..afadbda 100644 --- a/msg.pb.go +++ b/msg.pb.go @@ -23,21 +23,18 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type MyMsg_TYPE int32 const ( - MyMsg_DATA MyMsg_TYPE = 0 - MyMsg_PING MyMsg_TYPE = 1 - MyMsg_CATCH MyMsg_TYPE = 2 + MyMsg_DATA MyMsg_TYPE = 0 + MyMsg_PING MyMsg_TYPE = 1 ) var MyMsg_TYPE_name = map[int32]string{ 0: "DATA", 1: "PING", - 2: "CATCH", } var MyMsg_TYPE_value = map[string]int32{ - "DATA": 0, - "PING": 1, - "CATCH": 2, + "DATA": 0, + "PING": 1, } func (x MyMsg_TYPE) String() string { @@ -48,13 +45,40 @@ func (MyMsg_TYPE) EnumDescriptor() ([]byte, []int) { return fileDescriptor_c06e4cca6c2cc899, []int{0, 0} } +type Frame_TYPE int32 + +const ( + Frame_DATA Frame_TYPE = 0 + Frame_REQ Frame_TYPE = 1 + Frame_ACK Frame_TYPE = 2 +) + +var Frame_TYPE_name = map[int32]string{ + 0: "DATA", + 1: "REQ", + 2: "ACK", +} + +var Frame_TYPE_value = map[string]int32{ + "DATA": 0, + "REQ": 1, + "ACK": 2, +} + +func (x Frame_TYPE) String() string { + return proto.EnumName(Frame_TYPE_name, int32(x)) +} + +func (Frame_TYPE) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_c06e4cca6c2cc899, []int{1, 0} +} + type MyMsg struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Type int32 `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"` Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` Rproto int32 `protobuf:"varint,5,opt,name=rproto,proto3" json:"rproto,omitempty"` - Catch int32 `protobuf:"varint,6,opt,name=catch,proto3" json:"catch,omitempty"` Key int32 `protobuf:"varint,7,opt,name=key,proto3" json:"key,omitempty"` Tcpmode int32 `protobuf:"varint,8,opt,name=tcpmode,proto3" json:"tcpmode,omitempty"` TcpmodeBuffersize int32 `protobuf:"varint,9,opt,name=tcpmode_buffersize,json=tcpmodeBuffersize,proto3" json:"tcpmode_buffersize,omitempty"` @@ -125,13 +149,6 @@ func (m *MyMsg) GetRproto() int32 { return 0 } -func (m *MyMsg) GetCatch() int32 { - if m != nil { - return m.Catch - } - return 0 -} - func (m *MyMsg) GetKey() int32 { if m != nil { return m.Key @@ -248,6 +265,7 @@ func (m *Frame) GetDataid() []int32 { func init() { proto.RegisterEnum("MyMsg_TYPE", MyMsg_TYPE_name, MyMsg_TYPE_value) + proto.RegisterEnum("Frame_TYPE", Frame_TYPE_name, Frame_TYPE_value) proto.RegisterType((*MyMsg)(nil), "MyMsg") proto.RegisterType((*Frame)(nil), "Frame") } @@ -255,27 +273,26 @@ func init() { func init() { proto.RegisterFile("msg.proto", fileDescriptor_c06e4cca6c2cc899) } var fileDescriptor_c06e4cca6c2cc899 = []byte{ - // 339 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x51, 0xcb, 0x6e, 0xe2, 0x30, - 0x14, 0x1d, 0x27, 0x71, 0x48, 0xee, 0x30, 0x28, 0x73, 0x67, 0x5a, 0x59, 0x5d, 0x45, 0x48, 0x48, - 0x6c, 0xda, 0x45, 0xfb, 0x05, 0x40, 0x9f, 0x0b, 0x2a, 0x14, 0x65, 0xd3, 0x6e, 0x50, 0x20, 0x26, - 0xb5, 0xda, 0x84, 0x28, 0x31, 0x6a, 0xe9, 0x2f, 0xf4, 0x2f, 0xfb, 0x25, 0x95, 0x2f, 0x06, 0x89, - 0x95, 0xcf, 0x4b, 0xb6, 0x75, 0x0e, 0x84, 0x65, 0x5b, 0x5c, 0xd4, 0xcd, 0x5a, 0xaf, 0xfb, 0xdf, - 0x0e, 0xf0, 0xe9, 0x76, 0xda, 0x16, 0xd8, 0x03, 0x47, 0xe5, 0x82, 0xc5, 0x6c, 0x18, 0x26, 0x8e, - 0xca, 0x11, 0xc1, 0xd3, 0xdb, 0x5a, 0x0a, 0x27, 0x66, 0x43, 0x9e, 0x10, 0xc6, 0x53, 0xf0, 0x75, - 0xd6, 0x14, 0x52, 0x0b, 0x97, 0x72, 0x96, 0x99, 0x6c, 0x9e, 0xe9, 0x4c, 0x78, 0x31, 0x1b, 0x76, - 0x13, 0xc2, 0x26, 0xdb, 0xd0, 0x1b, 0x82, 0xd3, 0x0d, 0x96, 0xe1, 0x7f, 0xe0, 0xcb, 0x4c, 0x2f, - 0x5f, 0x84, 0x4f, 0xf2, 0x8e, 0x60, 0x04, 0xee, 0xab, 0xdc, 0x8a, 0x0e, 0x69, 0x06, 0xa2, 0x80, - 0x8e, 0x5e, 0xd6, 0xe5, 0x3a, 0x97, 0x22, 0x20, 0x75, 0x4f, 0xf1, 0x1c, 0xd0, 0xc2, 0xf9, 0x62, - 0xb3, 0x5a, 0xc9, 0xa6, 0x55, 0x9f, 0x52, 0x84, 0x14, 0xfa, 0x6b, 0x9d, 0xf1, 0xc1, 0xc0, 0x01, - 0xf4, 0xf6, 0xf1, 0x32, 0xfb, 0x78, 0x57, 0x95, 0x00, 0x8a, 0xfe, 0xb1, 0xea, 0x94, 0x44, 0xbc, - 0x84, 0x93, 0x7d, 0xac, 0x91, 0xad, 0xac, 0xf2, 0xb9, 0x56, 0xa5, 0x2c, 0x5b, 0xf1, 0x9b, 0xd2, - 0xff, 0xac, 0x99, 0x90, 0x97, 0x92, 0xd5, 0x1f, 0x80, 0x97, 0x3e, 0xcd, 0x6e, 0x30, 0x00, 0xef, - 0x7a, 0x94, 0x8e, 0xa2, 0x5f, 0x06, 0xcd, 0x1e, 0x1e, 0xef, 0x22, 0x86, 0x21, 0xf0, 0xc9, 0x28, - 0x9d, 0xdc, 0x47, 0x4e, 0xff, 0x8b, 0x01, 0xbf, 0x6d, 0xb2, 0x52, 0x1e, 0x4a, 0x65, 0xc7, 0xa5, - 0xee, 0x1e, 0xa4, 0xaa, 0x83, 0xc4, 0x32, 0x3c, 0x83, 0xc0, 0x9c, 0xe6, 0x17, 0x54, 0xb7, 0x9b, - 0x1c, 0xb8, 0x1d, 0xcb, 0xa3, 0x5b, 0xec, 0x58, 0x34, 0x00, 0x3f, 0x1e, 0xc0, 0x9c, 0x2a, 0x17, - 0x7e, 0xec, 0x9a, 0x01, 0x76, 0x6c, 0xdc, 0x7d, 0x86, 0x5a, 0x55, 0x85, 0xde, 0x54, 0x95, 0x7c, - 0x5b, 0xf8, 0xb4, 0xca, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x1b, 0xbb, 0x28, 0x14, - 0x02, 0x00, 0x00, + // 332 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x51, 0xcd, 0x4a, 0xc3, 0x40, + 0x10, 0x76, 0xf3, 0xd3, 0xa6, 0x63, 0x2d, 0x71, 0x45, 0x19, 0x7a, 0x0a, 0x01, 0xa1, 0x17, 0x3d, + 0xe8, 0x13, 0xb4, 0x5a, 0x45, 0xa4, 0x52, 0x97, 0x5e, 0xf4, 0x52, 0x52, 0xb3, 0x0d, 0x8b, 0x26, + 0x0d, 0xc9, 0x16, 0xad, 0x2f, 0xe5, 0x33, 0xf8, 0x66, 0xb2, 0xd3, 0x6d, 0xa0, 0x78, 0xda, 0xef, + 0x8f, 0x99, 0xe5, 0x1b, 0xe8, 0xe4, 0x75, 0x76, 0x59, 0x56, 0x2b, 0xbd, 0x8a, 0x7f, 0x1d, 0xf0, + 0x27, 0x9b, 0x49, 0x9d, 0xf1, 0x1e, 0x38, 0x2a, 0x45, 0x16, 0xb1, 0x41, 0x47, 0x38, 0x2a, 0xe5, + 0x1c, 0x3c, 0xbd, 0x29, 0x25, 0x3a, 0x11, 0x1b, 0xf8, 0x82, 0x30, 0x3f, 0x83, 0x96, 0x4e, 0xaa, + 0x4c, 0x6a, 0x74, 0x29, 0x67, 0x99, 0xc9, 0xa6, 0x89, 0x4e, 0xd0, 0x8b, 0xd8, 0xa0, 0x2b, 0x08, + 0x9b, 0x6c, 0x45, 0x3b, 0xd0, 0xa7, 0x09, 0x96, 0xf1, 0x10, 0xdc, 0x77, 0xb9, 0xc1, 0x36, 0x89, + 0x06, 0x72, 0x84, 0xb6, 0x7e, 0x2b, 0xf3, 0x55, 0x2a, 0x31, 0x20, 0x75, 0x47, 0xf9, 0x05, 0x70, + 0x0b, 0xe7, 0x8b, 0xf5, 0x72, 0x29, 0xab, 0x5a, 0x7d, 0x4b, 0xec, 0x50, 0xe8, 0xd8, 0x3a, 0xa3, + 0xc6, 0xe0, 0xe7, 0xd0, 0xdb, 0xc5, 0xf3, 0xe4, 0xeb, 0x53, 0x15, 0x08, 0x14, 0x3d, 0xb2, 0xea, + 0x84, 0x44, 0x7e, 0x05, 0xa7, 0xbb, 0x58, 0x25, 0x6b, 0x59, 0xa4, 0x73, 0xad, 0x72, 0x99, 0xd7, + 0x78, 0x48, 0xe9, 0x13, 0x6b, 0x0a, 0xf2, 0x66, 0x64, 0xc5, 0x7d, 0xf0, 0x66, 0x2f, 0xd3, 0x31, + 0x0f, 0xc0, 0xbb, 0x1d, 0xce, 0x86, 0xe1, 0x81, 0x41, 0xd3, 0x87, 0xa7, 0xfb, 0x90, 0xc5, 0x3f, + 0x0c, 0xfc, 0xbb, 0x2a, 0xc9, 0x65, 0xd3, 0x19, 0xdb, 0xef, 0x6c, 0xbb, 0x85, 0x9a, 0x0c, 0x84, + 0x65, 0xbc, 0x0f, 0x81, 0x79, 0xcd, 0x6a, 0x6a, 0xd3, 0x15, 0x0d, 0xb7, 0xb7, 0xf0, 0x68, 0x8a, + 0xbd, 0x05, 0xf5, 0xeb, 0xef, 0xf7, 0x6b, 0x5e, 0x95, 0x62, 0x2b, 0x72, 0x4d, 0xbf, 0x5b, 0x16, + 0xc7, 0xff, 0x7e, 0xda, 0x06, 0x57, 0x8c, 0x9f, 0x43, 0x66, 0xc0, 0xf0, 0xe6, 0x31, 0x74, 0x46, + 0xdd, 0x57, 0x28, 0x55, 0x91, 0xe9, 0x75, 0x51, 0xc8, 0x8f, 0x45, 0x8b, 0x0e, 0x73, 0xfd, 0x17, + 0x00, 0x00, 0xff, 0xff, 0x6c, 0xfe, 0x5f, 0xc5, 0x17, 0x02, 0x00, 0x00, } diff --git a/msg.proto b/msg.proto index 7c8086b..14945fb 100644 --- a/msg.proto +++ b/msg.proto @@ -4,7 +4,6 @@ message MyMsg { enum TYPE { DATA = 0; PING = 1; - CATCH = 2; } string id = 1; @@ -12,7 +11,6 @@ message MyMsg { string target = 3; bytes data = 4; int32 rproto = 5; - int32 catch = 6; int32 key = 7; int32 tcpmode = 8; int32 tcpmode_buffersize = 9; @@ -21,6 +19,12 @@ message MyMsg { } message Frame { + enum TYPE { + DATA = 0; + REQ = 1; + ACK = 2; + } + int32 type = 1; bool resend = 2; int64 sendtime = 3; diff --git a/pingtunnel.go b/pingtunnel.go index 84bb222..30a4513 100644 --- a/pingtunnel.go +++ b/pingtunnel.go @@ -17,7 +17,7 @@ import ( ) func sendICMP(id int, sequence int, conn icmp.PacketConn, server *net.IPAddr, target string, - connId string, msgType uint32, data []byte, sproto int, rproto int, catch int, key int, + connId string, msgType uint32, data []byte, sproto int, rproto int, key int, tcpmode int, tcpmode_buffer_size int, tcpmode_maxwin int, tcpmode_resend_time int) { m := &MyMsg{ @@ -26,7 +26,6 @@ func sendICMP(id int, sequence int, conn icmp.PacketConn, server *net.IPAddr, ta Target: target, Data: data, Rproto: (int32)(rproto), - Catch: (int32)(catch), Key: (int32)(key), Tcpmode: (int32)(tcpmode), TcpmodeBuffersize: (int32)(tcpmode_buffer_size), @@ -135,20 +134,7 @@ func GetMd5String(s string) string { return hex.EncodeToString(h.Sum(nil)) } -type CatchMsg struct { - conn *ServerConn - id string - src *net.IPAddr - data []byte -} - const ( FRAME_MAX_SIZE int = 888 FRAME_MAX_ID int = 999 ) - -const ( - FRAME_TYPE_DATA int = 0x0101 - FRAME_TYPE_REQ int = 0x0202 - FRAME_TYPE_ACK int = 0x0303 -) diff --git a/server.go b/server.go index e317dc6..a9a1768 100644 --- a/server.go +++ b/server.go @@ -27,9 +27,6 @@ type Server struct { sendPacketSize uint64 recvPacketSize uint64 - sendCatchPacket uint64 - recvCatchPacket uint64 - echoId int echoSeq int } @@ -43,8 +40,6 @@ type ServerConn struct { activeTime time.Time close bool rproto int - catch int - catchQueue chan *CatchMsg } func (p *Server) Run() { @@ -89,7 +84,7 @@ func (p *Server) processPacket(packet *Packet) { t.UnmarshalBinary(packet.my.Data) loggo.Info("ping from %s %s %d %d %d", packet.src.String(), t.String(), packet.my.Rproto, packet.echoId, packet.echoSeq) sendICMP(packet.echoId, packet.echoSeq, *p.conn, packet.src, "", "", (uint32)(MyMsg_PING), packet.my.Data, - (int)(packet.my.Rproto), -1, 0, p.key, + (int)(packet.my.Rproto), -1, p.key, 0, 0, 0, 0) return } @@ -117,10 +112,8 @@ func (p *Server) processPacket(packet *Packet) { return } - catchQueue := make(chan *CatchMsg, packet.my.Catch) - localConn = &ServerConn{tcpconn: targetConn, tcpaddrTarget: ipaddrTarget, id: id, activeTime: now, close: false, - rproto: (int)(packet.my.Rproto), catchQueue: catchQueue} + rproto: (int)(packet.my.Rproto)} p.localConnMap[id] = localConn @@ -141,10 +134,8 @@ func (p *Server) processPacket(packet *Packet) { return } - catchQueue := make(chan *CatchMsg, packet.my.Catch) - localConn = &ServerConn{conn: targetConn, ipaddrTarget: ipaddrTarget, id: id, activeTime: now, close: false, - rproto: (int)(packet.my.Rproto), catchQueue: catchQueue} + rproto: (int)(packet.my.Rproto)} p.localConnMap[id] = localConn @@ -153,20 +144,6 @@ func (p *Server) processPacket(packet *Packet) { } localConn.activeTime = now - localConn.catch = (int)(packet.my.Catch) - - if packet.my.Type == (int32)(MyMsg_CATCH) { - select { - case re := <-localConn.catchQueue: - sendICMP(packet.echoId, packet.echoSeq, *p.conn, re.src, "", re.id, (uint32)(MyMsg_CATCH), re.data, - re.conn.rproto, -1, 0, p.key, - 0, 0, 0, 0) - p.sendCatchPacket++ - case <-time.After(time.Duration(1) * time.Millisecond): - } - p.recvCatchPacket++ - return - } if packet.my.Type == (int32)(MyMsg_DATA) { @@ -207,16 +184,9 @@ func (p *Server) RecvTCP(conn *ServerConn, id string, src *net.IPAddr) { now := time.Now() conn.activeTime = now - if conn.catch > 0 { - select { - case conn.catchQueue <- &CatchMsg{conn: conn, id: id, src: src, data: bytes[:n]}: - case <-time.After(time.Duration(10) * time.Millisecond): - } - } else { - sendICMP(p.echoId, p.echoSeq, *p.conn, src, "", id, (uint32)(MyMsg_DATA), bytes[:n], - conn.rproto, -1, 0, p.key, - 0, 0, 0, 0) - } + sendICMP(p.echoId, p.echoSeq, *p.conn, src, "", id, (uint32)(MyMsg_DATA), bytes[:n], + conn.rproto, -1, p.key, + 0, 0, 0, 0) p.sendPacket++ p.sendPacketSize += (uint64)(n) @@ -248,16 +218,9 @@ func (p *Server) Recv(conn *ServerConn, id string, src *net.IPAddr) { now := time.Now() conn.activeTime = now - if conn.catch > 0 { - select { - case conn.catchQueue <- &CatchMsg{conn: conn, id: id, src: src, data: bytes[:n]}: - case <-time.After(time.Duration(10) * time.Millisecond): - } - } else { - sendICMP(p.echoId, p.echoSeq, *p.conn, src, "", id, (uint32)(MyMsg_DATA), bytes[:n], - conn.rproto, -1, 0, p.key, - 0, 0, 0, 0) - } + sendICMP(p.echoId, p.echoSeq, *p.conn, src, "", id, (uint32)(MyMsg_DATA), bytes[:n], + conn.rproto, -1, p.key, + 0, 0, 0, 0) p.sendPacket++ p.sendPacketSize += (uint64)(n) @@ -290,12 +253,10 @@ func (p *Server) checkTimeoutConn() { } func (p *Server) showNet() { - loggo.Info("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s sendCatch %d/s recvCatch %d/s", - p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024, p.sendCatchPacket, p.recvCatchPacket) + loggo.Info("send %dPacket/s %dKB/s recv %dPacket/s %dKB/s", + p.sendPacket, p.sendPacketSize/1024, p.recvPacket, p.recvPacketSize/1024) p.sendPacket = 0 p.recvPacket = 0 p.sendPacketSize = 0 p.recvPacketSize = 0 - p.sendCatchPacket = 0 - p.recvCatchPacket = 0 }