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

发布于 2022-09-04 22:42:56 字数 2138 浏览 13 评论 0

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

 [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;
        }

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吾家有女初长成 2022-09-11 22:42:56

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文