关于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;
}
反序列化的时候并不知道泛型的类型.....有什么更好的解决方案吗?我想把 数据类型 和 数据 分开传输,先拿到数据类型,再解析数据,这样可行吗?要怎样实现?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
多开几个端口可以解决......