123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- package socketsend
- import (
- "errors"
- "fmt"
- "ipsomc/core/dao/redis/redisapi"
- "ipsomc/module/socket/socketmodel"
- "ipsomc/public"
- "net"
- )
- var gSocket_UdpConn *net.UDPConn = nil
- var GSocket_mapTcpConn = make(map[string]*net.TCPConn)
- type SocketSend struct {
- }
- func (obj *SocketSend) SaveUdpConnHandle(udpConn *net.UDPConn) {
- gSocket_UdpConn = udpConn
- }
- func (obj *SocketSend) SaveTcpConnHandle(tcpConn *net.TCPConn, address string) {
- GSocket_mapTcpConn[address] = tcpConn
- }
- func (obj *SocketSend) DeleteTcpConnHandle(address string) {
- delete(GSocket_mapTcpConn, address)
- }
- func (obj *SocketSend) SendDataToBts(projectId int, btsId int, apDataFrame []byte, wLen uint16) error {
- var redisObj redisapi.RedisApi
- udpClientAddr := &net.UDPAddr{}
- var udpClientAddrModel socketmodel.ClientAddr
-
- redisKey := fmt.Sprintf("%08X", int(projectId)) + "-" + fmt.Sprintf("%08X", int(btsId))
- if err := redisObj.GetModelData(redisKey, &udpClientAddrModel); err != nil {
-
- public.PublicDeleteOneItem(redisKey)
- return errors.New("该链接已过期")
- }
-
- ip := make(net.IP, net.IPv4len)
- copy(ip, udpClientAddrModel.IP[:])
- udpClientAddr.IP = ip
- udpClientAddr.Port = udpClientAddrModel.Port
- udpClientAddr.Zone = udpClientAddrModel.Zone
-
- _, err := gSocket_UdpConn.WriteToUDP(apDataFrame, udpClientAddr)
- if err != nil {
- return err
- }
- println("send data to bts", apDataFrame[0], apDataFrame[len(apDataFrame)-1], len(apDataFrame))
- return nil
- }
- func (obj *SocketSend) SendDataToBtsTcp(projectId int, btsId int, apDataFrame []byte, wLen uint16) error {
- var redisObj redisapi.RedisApi
- var clientAddrModel socketmodel.ClientAddr
-
- redisKey := fmt.Sprintf("%08X", int(projectId)) + "-" + fmt.Sprintf("%08X", int(btsId))
- if err := redisObj.GetModelData(redisKey, &clientAddrModel); err != nil {
-
- public.PublicDeleteOneItem(redisKey)
- return errors.New("该链接已过期")
- }
-
- conn, exist := GSocket_mapTcpConn[clientAddrModel.Address]
- if exist {
-
- _, err := conn.Write(apDataFrame)
- if err != nil {
- return err
- }
- println("send data to bts", apDataFrame[0], apDataFrame[len(apDataFrame)-1], len(apDataFrame))
- }
- return nil
- }
|