服务器端是C#写的,客户端是VC写的,客户端把一个对象发送过来,如:
class A{
int a;
int b;}服务端如何接收并提取这个对象的a,b值呢?若是vc,直接新建一个对象,把收到的数据放到该对象的地址上即可,因为对C#不熟,不知C#应如何操作,所以请教下大家。。
class A{
int a;
int b;}服务端如何接收并提取这个对象的a,b值呢?若是vc,直接新建一个对象,把收到的数据放到该对象的地址上即可,因为对C#不熟,不知C#应如何操作,所以请教下大家。。
调试欢乐多
然后通过socket
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, a);
弱弱地问下,fs是一个流对象,怎么获取socket的流?
若是vc,直接新建一个对象,把收到的数据放到该对象的地址上即可如果要按照字节精确对照某一个c++环境的某一个业务版本,建议你让它去c++继续编程吧,不要用于.net项目中。一个项目,会考虑到在开发阶段其数据字段/属性定义可能随时修改类型,可能随时插入或者删除字段/属性,那么至少要考虑到这种适配要在一分钟内完成。
socket 中传输的是字节数组,从流中读取字节数组 然后在发送就可以了。接受的时候再将接受到的字节数组写入流中 反序列化。
流可以是由byte[]实化的MemoryStream
//序列化
public static byte[] ObjectToBytes(object obj)
{
using (MemoryStream ms = new MemoryStream())
{
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
return ms.GetBuffer();
}
}//反序列化
public static object BytesToObject(byte[] Bytes)
{
using (MemoryStream ms = new MemoryStream(Bytes))
{
IFormatter formatter = new BinaryFormatter();
return formatter.Deserialize(ms);
}
}