Example #1
0
        static void Main(string[] args)
        {
            Console.Title = "SAEA.Sockets.UdpTest";

            //udpserver
            UDPServer server = new UDPServer();

            server.OnReceive += Server_OnReceive;
            server.Start();

            //udpclient
            var bContext = new BaseContext();

            UDPClient client = new UDPClient();

            client.OnReceive += Client_OnReceive;
            client.Connect();

            //send msg
            for (int i = 0; i < 10; i++)
            {
                client.SendAsync(BaseSocketProtocal.Parse(Encoding.UTF8.GetBytes($"hello udpserver {i}"), SocketProtocalType.ChatMessage));
            }

            Console.ReadLine();
        }
Example #2
0
 void HeartAsync()
 {
     TaskHelper.Start(() =>
     {
         try
         {
             while (true)
             {
                 if (_client.Connected)
                 {
                     if (Actived.AddMilliseconds(HeartSpan) <= DateTimeHelper.Now)
                     {
                         var sm = new BaseSocketProtocal()
                         {
                             BodyLength = 0,
                             Type       = (byte)SocketProtocalType.Heart
                         };
                         _client.SendAsync(sm.ToBytes());
                     }
                     ThreadHelper.Sleep(HeartSpan);
                 }
                 else
                 {
                     ThreadHelper.Sleep(1000);
                 }
             }
         }
         catch { }
     });
 }
Example #3
0
        void ReplyGroupMessage(MessageUserToken userToken, ChatMessage cm)
        {
            ReplyBase(userToken, new ChatMessage(ChatMessageType.GroupMessageAnswer, ""));

            var groupMsg = cm.GetIMessage <GroupMessage>();

            if (groupMsg != null && !string.IsNullOrEmpty(groupMsg.Name))
            {
                groupMsg.Sender = userToken.ID;

                groupMsg.Sended = DateTimeHelper.ToString();

                var group = _groupList.Get(groupMsg.Name);

                if (group != null && group.Members != null)
                {
                    lock (_groupList.SyncLocker)
                    {
                        var ccm  = new ChatMessage(ChatMessageType.GroupMessage, groupMsg);
                        var data = SerializeHelper.PBSerialize(cm);
                        var sp   = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

                        Parallel.ForEach(group.Members, (m) =>
                        {
                            if (m.ID != userToken.ID)
                            {
                                _server.SendAsync(m.ID, sp);
                            }
                        });
                    }
                }
            }
        }
Example #4
0
        void ReplyChannelMessage(MessageUserToken userToken, ChatMessage cm)
        {
            var channelMsg = SerializeHelper.Deserialize <ChannelMessage>(cm.Content);

            if (channelMsg != null && !string.IsNullOrEmpty(channelMsg.Name))
            {
                channelMsg.Sender = userToken.ID;

                channelMsg.Sended = DateTimeHelper.ToString();

                var channel = _channelList.Get(channelMsg.Name);

                if (channel != null && channel.Members != null)
                {
                    var members = channel.Members.ToArray();

                    var ccm = new ChatMessage(ChatMessageType.ChannelMessage, SerializeHelper.Serialize(channelMsg));

                    var data = SerializeHelper.PBSerialize(ccm);

                    var sp = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

                    Parallel.ForEach(members, (m) =>
                    {
                        if (m.ID != userToken.ID)
                        {
                            _server.SendAsync(m.ID, sp);
                        }
                    });
                }
            }
        }
Example #5
0
        private void SendBase(ChatMessage cm)
        {
            var data = SerializeHelper.PBSerialize(cm);

            var content = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

            _batcher.Insert(content);
        }
Example #6
0
        void ReplyBase(IUserToken userToken, ChatMessage cm)
        {
            var data = SerializeHelper.PBSerialize(cm);

            var sp = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

            _classificationBatcher.Insert(userToken.ID, sp);
        }
Example #7
0
        void ReplyBase(IUserToken userToken, ChatMessage cm)
        {
            var data = SerializeHelper.PBSerialize(cm);

            var sp = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

            _server.SendAsync(userToken.ID, sp);
        }
Example #8
0
        private void SendBase(ChatMessage cm)
        {
            var data = SerializeHelper.PBSerialize(cm);

            var content = BaseSocketProtocal.Parse(data, SocketProtocalType.ChatMessage).ToBytes();

            _client.SendAsync(content);

            Actived = DateTimeHelper.Now;
        }
Example #9
0
        private static void Server_OnReceive(UDPServer arg1, string arg2, ISocketProtocal arg3)
        {
            lock (_locker)
            {
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.WriteLine($"udp服务器收到消息:{Encoding.UTF8.GetString(arg3.Content)}");
            }

            var msg2 = BaseSocketProtocal.Parse(Encoding.UTF8.GetBytes($"udpserver reply:{Encoding.UTF8.GetString(arg3.Content)}"), SocketProtocalType.ChatMessage);

            arg1.SendAsync(arg2, msg2);
        }
Example #10
0
        /// <summary>
        /// 基础发送数据
        /// </summary>
        /// <param name="protocalType"></param>
        /// <param name="data"></param>
        void BaseSend(ProtocalType protocalType, byte[] data)
        {
            var p = new BaseSocketProtocal();

            p.Type    = (byte)protocalType;
            p.Content = data;
            if (p.Content != null)
            {
                p.BodyLength = p.Content.Length;
            }
            else
            {
                p.BodyLength = 0;
            }
            _udpClient.SendAsync(p.ToBytes());
        }
Example #11
0
        void BaseReply(string id, ProtocalType protocalType, byte[] data)
        {
            var p = new BaseSocketProtocal();

            p.Type    = (byte)protocalType;
            p.Content = data;
            if (p.Content != null)
            {
                p.BodyLength = p.Content.Length;
            }
            else
            {
                p.BodyLength = 0;
            }
            _udpServer.SendAsync(id, p.ToBytes());
        }
Example #12
0
 /// <summary>
 /// SendAsync
 /// </summary>
 /// <param name="id"></param>
 /// <param name="baseSocketProtocal"></param>
 protected void SendAsync(string id, BaseSocketProtocal baseSocketProtocal)
 {
     _udpServer.SendAsync(id, baseSocketProtocal.ToBytes());
 }
Example #13
0
 /// <summary>
 /// SendAsync
 /// </summary>
 /// <param name="id"></param>
 /// <param name="data"></param>
 /// <param name="socketProtocalType"></param>
 public void SendAsync(string id, byte[] data, SocketProtocalType socketProtocalType = SocketProtocalType.ChatMessage)
 {
     SendAsync(id, BaseSocketProtocal.Parse(data, socketProtocalType));
 }
Example #14
0
 public void SendAsync(BaseSocketProtocal protocal)
 {
     _udpClient.SendAsync(protocal.ToBytes());
 }