首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

反序列化 socket传输,该如何处理

2012-09-14 
反序列化 socket传输建立两个项目,一个是服务端,一个是客户端,现在想把一个对象序列化后,发送给服务端,然

反序列化 socket传输
建立两个项目,一个是服务端,一个是客户端,现在想把一个对象序列化后,发送
给服务端,然后服务端饭序列化后,得到要的数据。
代码如下

C# code
服务端:        private void button1_Click(object sender, EventArgs e)        {             IPAddress ip = IPAddress.Parse("127.0.0.1");            IPEndPoint ipep = new IPEndPoint(ip, 55555);            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            server.Bind(ipep);            server.Listen(10);            while (true)            {                Socket s = server.Accept();                byte[] uspw = new Byte[1024];                //接受  然后反序列化                 s.Receive(uspw);                BinaryFormatter formatter = new BinaryFormatter();                MemoryStream stream = new MemoryStream(uspw);                               user us= (user)formatter.Deserialize(stream);            }        }   [Serializable]    public class user    {        public string userID;        public string password;    }


C# code
客户端:        private void button1_Click(object sender, EventArgs e)        {            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            client.Connect(IPAddress.Parse("127.0.0.1"), 55555);            MemoryStream stream = new MemoryStream();            IFormatter formatter = new BinaryFormatter();            user us = new user();            us.userID = "xiao";            us.password = "rrr";            formatter.Serialize(stream, us);            stream.Flush();            byte[] uspw = stream.ToArray();             client.Send(uspw);        }    [Serializable]    public class user    {        public string userID;        public string password;    }


问题是:服务端接到数据后,显示无法找到程序集。导致不能反序列化对象。
这是怎么回事呢?知道的说下,谢谢

[解决办法]
这个问题 

[Serializable]
public class user
{
public string userID;
public string password;

}

这个需要单独放到一个DLL里 服务端和客户端引用这个DLL..

另外一种方式 序列化成XML数据发送.
[解决办法]
顶1楼。
你的客户端和服务端分别定义了user类,事实上这是两个不同的类,用一种类的实例序列化后,希望反序列化到另一种类的实例上,肯定是不可以的。

[解决办法]
对DLL不是很懂……
学习了。
[解决办法]
探讨
这个问题

[Serializable]
    public class user
    {
        public string userID;
        public string password;

    }

这个需要单独放到一个DLL里  服务端和客户端引用这个DLL..

另外一种方式 序列化成XML数据发送.

[解决办法]
使用xml序列化就可以了
[解决办法]
探讨
引用:

这个需要单独放到一个DLL里  服务端和客户端引用这个DLL..



类放dll中怎么调用呢?能说明一下么?

[解决办法]
不知道,帮顶,记得给分啊
[解决办法]
学习中。。。。。
[解决办法]
学习
[解决办法]
学习。


[解决办法]
因为服务器端根本就不存在这个类。因为反序列化出来是一个Object对象
将结构体编译成类库*.dll

热点排行