可以用.net 提供的 SoapFormatter 或者 BinaryFormatter 把你的object serialize
然后通过socket 传送
在接受方用同样的formatter deserialize 还原出来
然后通过socket 传送
在接受方用同样的formatter deserialize 还原出来
解决方案 »
- C# 判断是否插入U盾
- C# 回调函数 线程问题
- C#连接access的问题
- 导出到Excel时发生异常,如HRESULT 中的异常:0x800AC472。
- 如果统计一个字符串在另一个字符串中出现的次数?
- 能不能对一个DataTable里的行进行随机重排序?
- Access数据库怎么设置用户名和密码?
- 求弹球游戏代码 C# 弹球撞击砖块哟礼物掉下来的,y速度掉下的。
- 音乐播放器调用Ctlcontrols.play();用户代码未处理InvalidCastException
- MDI窗体中子窗体最大化的问题
- 1、求一个访问INI文件的类,最好不要调用API。
- 怎样才能得到DataView中的记录数??
public class MyClass
{
public string MyClassMember = "Hello World";
} public void Send(Socket socket)
{
MyClass obj = new MyClass(); BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, obj); byte[] data = new byte[1024]; while( ms.Read(data, 0, 1024)>0 )
{
sk.Send(data);
}
} public void Recieve(Socket socket)
{
BinaryFormatter bf = new BinaryFormatter(); byte[] data = new byte[1024]; MemoryStream ms = new MemoryStream(); while( sk.Receive(data)>0 )
{
ms.Write(data, 0, 1024);
} MyClass obj = bf.Deserialize(ms) as MyClass;
}
// 用于传递的类
[Serializable]
public class MyClass
{
public string MyClassMember = "Hello World";
}// 客户端
[Serializable]
public class MyClass
{
public string MyClassMember = "Hello World";
}public class Client
{
static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("127.0.0.1").AddressList[0],1000); try
{
sock.Connect(ep);
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
MyClass obj = new MyClass();
bf.Serialize(ms,obj);
ms.Position = 0;
byte[] data = new byte[1024];
while(ms.Read(data,0,1024)>0)
sock.Send(data);
}
catch{}
finally
{
sock.Shutdown(SocketShutdown.Both);
sock.Close();
}
}
}// 服务器端
public class Server
{
static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("localhost").AddressList[0],1000);
sock.Bind(ep);
sock.Listen(1);
Console.WriteLine("Server is Start..."); Socket sc = sock.Accept();
BinaryFormatter bf = new BinaryFormatter(); byte[] data = new byte[1024];
MemoryStream ms = new MemoryStream(); while( sc.Receive(data)>0 )
ms.Write(data, 0, 1024); MyClass obj = bf.Deserialize(ms) as MyClass; // 这一行产生以下的异常信息
Console.WriteLine(obj.MyClassMember); }
}
未处理的异常: System.Runtime.Serialization.SerializationException: 在分析完成之
前就遇到流结尾。
// 用于传递的类
[Serializable]
public class MyClass
{
public string MyClassMember = "Hello World";
}// 客户端
public class Client
{
static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("127.0.0.1").AddressList[0],1000); try
{
sock.Connect(ep);
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
MyClass obj = new MyClass();
bf.Serialize(ms,obj);
ms.Position = 0;
byte[] data = new byte[1024];
while(ms.Read(data,0,1024)>0)
sock.Send(data);
}
catch{}
finally
{
sock.Shutdown(SocketShutdown.Both);
sock.Close();
}
}
}// 服务器端
public class Server
{
static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPEndPoint ep = new IPEndPoint(Dns.GetHostByName("localhost").AddressList[0],1000);
sock.Bind(ep);
sock.Listen(1);
Console.WriteLine("Server is Start..."); Socket sc = sock.Accept();
BinaryFormatter bf = new BinaryFormatter(); byte[] data = new byte[1024];
MemoryStream ms = new MemoryStream(); while( sc.Receive(data)>0 )
ms.Write(data, 0, 1024); MyClass obj = bf.Deserialize(ms) as MyClass; // 这一行产生以下的异常信息
Console.WriteLine(obj.MyClassMember); }
}
未处理的异常: System.Runtime.Serialization.SerializationException: 在分析完成之
前就遇到流结尾。
ms.Position = 0;