泛型 - 关于c# socket 传输信息的问题

查看:93
本文介绍了泛型 - 关于c# socket 传输信息的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

服务器与客户端之间信息的格式定义如下

 [Serializable]
    public class Message<T>
    {
        private DataType.Head header;
        private T content;

        public DataType.Head Header
        {
            set
            {
                header = value;
            }
            get
            {
                return header;
            }
        }

        public T Content
        {
            set
            {
                content = value;
            }
            get
            {
                return content;
            }
        }

        public Message(DataType.Head head, T content)
        {
            this.Header = head;
            this.Content = content;
        }

关于聊天室的程序,我想传输 用户列表,聊天室列表,单纯的string消息 三种类型的数据,序列化 反序列化的方法如下

        public void SerializeData<T>(Socket socket, Protocol.Message<T> msg)
        {
            try
            {
                IFormatter formatter = new BinaryFormatter();
                NetworkStream strm = new NetworkStream(socket);
                formatter.Serialize(strm, msg);
            }
            catch (SerializationException e)
            {
                new Exceptions.SerializationException(e);
            }
            catch (Exception e)
            {
                new Exceptions.UnknowException(e);
            }
        }

        public Protocol.Message<T> DeserializeData<T>(Socket socket)
        {
            try
            {
                NetworkStream strm = new NetworkStream(socket);
                IFormatter formatter = new BinaryFormatter();
                Protocol.Message<T> msg = (Protocol.Message<T>)formatter.Deserialize(strm);
                return msg;
            }
            catch (SerializationException e)
            {
                new Exceptions.SerializationException(e);
            }
            catch (Exception e)
            {
                new Exceptions.UnknowException(e);
            }
            return null;
        }

反序列化的时候并不知道泛型的类型.....有什么更好的解决方案吗?我想把 数据类型 和 数据 分开传输,先拿到数据类型,再解析数据,这样可行吗?要怎样实现?

解决方案

多开几个端口可以解决......

这篇关于泛型 - 关于c# socket 传输信息的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆