Example #1
0
 //按组发送
 public static void SocketSendByGroup(int groupId, Package pkg)
 {
     m_tryToRemoveSocketIdBuffer.Clear();
     foreach (int key in socketPool.Keys)
     {
         try
         {
             BaseSocket s = socketPool[key];
             //组Id匹配
             if (groupId == s.GetGroupId())
             {
                 var sendBytes = PackageHelper.GetNetworkSendBuffer(pkg);;
                 if (s.SocketSend(sendBytes, 0, sendBytes.Length) != SOCKET_CODE.SUCCESS)
                 {
                     m_tryToRemoveSocketIdBuffer.Add(key);
                 }
             }
         }
         catch
         {
             m_tryToRemoveSocketIdBuffer.Add(key);
         }
     }
     foreach (int id in m_tryToRemoveSocketIdBuffer)
     {
         socketPool[id].SocketClose();
         socketPool.Remove(id);
     }
     m_tryToRemoveSocketIdBuffer.Clear();
 }
Example #2
0
    //主动发送
    public static bool SocketSend(int id, Package pkg)
    {
        if (socketPool.ContainsKey(id))
        {
            try
            {
                BaseSocket s = socketPool[id];
                if (s.GetSocketId() != IpManager.ListenSocketId)
                {
                    var sendBytes = PackageHelper.GetNetworkSendBuffer(pkg);
                    if (s.SocketSend(sendBytes, 0, sendBytes.Length) != SOCKET_CODE.SUCCESS)
                    {
                        socketPool[id].SocketClose();
                        socketPool.Remove(id);
                    }
                    return(true);
                }
            }
            catch
            {
                socketPool[id].SocketClose();
                socketPool.Remove(id);
            }
        }

        return(false);
    }
Example #3
0
    public static bool RequestService(SocketInfoType socketInfoType, Package pkg)
    {
        int type = (int)socketInfoType;
        //if (ConnectToService(socketInfoType) == SERVICE_CODE.SUCCESS) //注掉这行代码 意味着用户需要显式连接后再发送
        {
            if (connectorMap.ContainsKey(type))
            {
                BaseSocket s = connectorMap[type];

                var sendBuff = PackageHelper.GetNetworkSendBuffer(pkg);
                if (s.SocketSend(sendBuff, 0, sendBuff.Length) == SOCKET_CODE.SUCCESS)
                {
                    return true;
                }
                else
                {
                    connectorMap.Remove(type);
                    return false;
                }
            }
        }

        return false;
    }