示例#1
0
 /// <summary>
 /// 包装 UTF8编码
 /// 将正文包装成ProtocolData再序列化和编码成Byte
 /// </summary>
 /// <param name="content"></param>
 /// <returns></returns>
 public static byte[] Packing(string content)
 {
     return(SerializationHelper.Serialize(new ProtocolData
     {
         Content = EncodingHelper.Encoding(content)
     }));
 }
示例#2
0
        /// <summary>
        /// 启动服务
        /// </summary>
        public void Start()
        {
            // 第一步:绑定端口
            // 服务端用于监听
            Socket socketListen = CreateServerSocket();

            // 第二步:开启线程,进行监听
            Thread thrAccept = new Thread(Watching);

            thrAccept.IsBackground = true;
            thrAccept.Start(socketListen);
            Console.WriteLine("Server started Listen on " + socketListen.LocalEndPoint.ToString());
            // 死循环发送数据到客户端
            while (true)
            {
                var str = MessageQueue.WaitOne();
                // 第五步:发送信息
                // TODO 构建请求或响应管道,包含 请求,解密->反序列化->...处理...->序列化->加密,响应
                // TODO 一次请求的数据过大,构建流读取?JSON是否支持流读取
                // 使用序列化器 转换字节数据和对象
                var content   = $"{str} - by Server on {DateTime.Now.ToString()}";
                var dataBytes = SerializationHelper.Serialize(new ProtocolData
                {
                    Headers = new List <Attribute>
                    {
                        new Attribute
                        {
                            Name  = "ServerTime",
                            Value = DateTime.UtcNow.ToString()
                        }
                    },
                    Content = EncodingHelper.Encoding(content)
                });
                // TODO 这里是群发,改为通过协议转发
                foreach (var comunicate in socketClientConns)
                {
                    if (comunicate.Value != null && comunicate.Value.Connected)
                    {
                        comunicate.Value.Send(dataBytes);
                    }
                }
            }
        }
示例#3
0
 /// <summary>
 /// 序列化&编码&加密
 /// </summary>
 /// <param name="obj"></param>
 /// <returns></returns>
 public static byte[] Serialize(object obj)
 {
     return(EncodingHelper.Encoding(JsonConvert.SerializeObject(obj)));
 }