Exemple #1
0
        /// <summary>
        /// TCPにてデータを送信する
        /// </summary>
        /// <param name="ClientMethodName"></param>
        /// <param name="data"></param>
        public void BroadCastNoReturn(string ClientMethodName, byte[] data, List <Group> GroupLists = null)
        {
            if (data != null && data.Length > SocketySetting.MAX_BUFFER)
            {
                throw new SocketyException(SocketyException.SOCKETY_EXCEPTION_ERROR.BUFFER_OVER);
            }
            List <ClientHub <T> > DisConnction = new List <ClientHub <T> >();

            List <ClientHub <T> > SendLists;

            lock (SocketClient <T> .GetInstance().ClientHubs)
            {
                if (GroupLists == null)
                {
                    SendLists = SocketClient <T> .GetInstance().ClientHubs;
                }
                else
                {
                    SendLists = new List <ClientHub <T> >();
                    lock (SocketClient <T> .GetInstance().ClientHubs)
                    {
                        ///送信先をグループで検索しリストを作成
                        SocketClient <T> .GetInstance().ClientHubs.ForEach(x =>
                        {
                            foreach (var g in GroupLists)
                            {
                                if (x.ClientInfo.JoinGroups.Contains(g) == true)
                                {
                                    if (SendLists.Contains(x) == false)
                                    {
                                        SendLists.Add(x);
                                        break;
                                    }
                                }
                            }
                        });
                    }
                }

                SendLists.ForEach(async(x) =>
                {
                    try
                    {
                        x.SendNonReturn(ClientMethodName, data);
                    }
                    catch (IOException)
                    {
                    }
                });
            }
        }
Exemple #2
0
        /// <summary>
        /// UDPにてデータを送信する
        /// </summary>
        /// <param name="data"></param>
        public void BroadCastUDPNoReturn(ClientInfo clientInfo, byte[] data, List <Group> GroupLists = null)
        {
            if (data != null && data.Length > SocketySetting.MAX_UDP_SIZE)
            {
                throw new SocketyException(SocketyException.SOCKETY_EXCEPTION_ERROR.BUFFER_OVER);
            }

            var packet = new SocketyPacketUDP {
                MethodName = "Udp", clientInfo = clientInfo, PacketID = Guid.NewGuid(), PacketNo = 1, PackData = data, PacketType = SocketyPacketUDP.PACKET_TYPE.DATA
            };

            List <ClientHub <T> > SendLists;

            lock (SocketClient <T> .GetInstance().ClientHubs)
            {
                if (GroupLists == null)
                {
                    SendLists = SocketClient <T> .GetInstance().ClientHubs;
                }
                else
                {
                    SendLists = new List <ClientHub <T> >();
                    ///送信先をグループで検索しリストを作成
                    SocketClient <T> .GetInstance().ClientHubs.ForEach(x =>
                    {
                        foreach (var g in GroupLists)
                        {
                            if (x.ClientInfo.JoinGroups.Contains(g) == true)
                            {
                                if (SendLists.Contains(x) == false)
                                {
                                    SendLists.Add(x);
                                    break;
                                }
                            }
                        }
                    });
                }

                SendLists.ForEach(x =>
                {
                    x.SendUdp(packet);
                });
            }
        }