建立两个项目,一个是服务端,一个是客户端,现在想把一个对象序列化后,发送
给服务端,然后服务端饭序列化后,得到要的数据。
代码如下服务端:
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; }客户端:
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; }
问题是:服务端接到数据后,显示无法找到程序集。导致不能反序列化对象。
这是怎么回事呢?知道的说下,谢谢
给服务端,然后服务端饭序列化后,得到要的数据。
代码如下服务端:
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; }客户端:
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; }
问题是:服务端接到数据后,显示无法找到程序集。导致不能反序列化对象。
这是怎么回事呢?知道的说下,谢谢
public class user
{
public string userID;
public string password; }这个需要单独放到一个DLL里 服务端和客户端引用这个DLL..另外一种方式 序列化成XML数据发送.
你的客户端和服务端分别定义了user类,事实上这是两个不同的类,用一种类的实例序列化后,希望反序列化到另一种类的实例上,肯定是不可以的。
类放dll中怎么调用呢?能说明一下么?
赞成,通迅公用的基础结构体或类,放在一个dll中,然后同时引用就ok. 类放dll中怎么调用呢?能说明一下么?
就是把要用的class放在一个dll中,在使用时引用这个dll,然后using命名空间就可以使用了。
新建个库类 把要序列化的类写到这个库类里.编译后..客户端和服务段都添加这个DLL文件的引用.
将结构体编译成类库*.dll