日期:2014-05-19  浏览次数:20893 次

通过SOCKET或TCP可以在两台机器之间传送数据结构吗?比如传一个DATAGRID?
通过SOCKET或TCP可以在两台机器之间传送数据结构吗?
比如传一个DATAGRID或者传一个自定义的结构数组     谢谢

------解决方案--------------------
可以,序列化就行了.
------解决方案--------------------
DataGrid传过去有啥用? :)
用BinaryFomatter可以将自定义的结构序列化到MemoryStream,然后再ToCharArray转换到数组,经Socket发送
------解决方案--------------------
同意楼上
------解决方案--------------------
你传一个DataGrid干什么,你要传数据直接将DataSet中的数据通过Xml方式导出来,再将Xml字符串传过去不就得了。其他的话可以将对象序列化,在那一头反序列化就可以了。
------解决方案--------------------
可以用remoting来试试,直接传实例过去。
------解决方案--------------------
mark
------解决方案--------------------
传datagrid?嗯,有创意 :D

传数据就可以了嘛,一般都是序列化
------解决方案--------------------
remoting
------解决方案--------------------
序列化
------解决方案--------------------
remoting
------解决方案--------------------
SOCKET又不能传对象的,通通以BYTE方式传

你自己编码解码就是了

想简单就用REMOTING,其实是封装好的带SOAP协议的SOCKET
------解决方案--------------------
up...
------解决方案--------------------
给你个序列化和反序列化对象的类吧。
using System.Runtime.Serialization.Formatters.Binary;

namespace Formatter
{
/// <summary>
/// FormatterHelper 序列化,反序列化消息的帮助类
/// </summary>
public class FormatterHelper
{
public static byte[] Serialize(object obj)
{
BinaryFormatter binaryF = new BinaryFormatter();
MemoryStream ms = new MemoryStream(1024 * 10);
binaryF.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[(int)ms.Length];
ms.Read(buffer, 0, buffer.Length);
ms.Close();
return buffer;
}

public static object Deserialize(byte[] buffer)
{
BinaryFormatter binaryF = new BinaryFormatter();
MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length, false);
object obj = binaryF.Deserialize(ms);
ms.Close();
return obj;
}

}
}

------解决方案--------------------
我感觉传什么都要填到
byte[]中吧
不知道对不
做个记号
看大家怎么理解的