Socket怎么传送Class? (100分)

  • 主题发起人 主题发起人 zealothasu
  • 开始时间 开始时间
Z

zealothasu

Unregistered / Unconfirmed
GUEST, unregistred user!
有很多命令,其中有一部分是相同的,不想定义Record,因为需要重复定义很多同样的东西,那么改怎么样通过Socket传送呢?
我的做法是
定义一个TBaseClass
然后是几个子类

想通过Socket传送这些类,使用SendBuffer,但是怎么知道Size?
还有就是接收的时候我怎么知道要收的是什么类呢?
有没有更好的解决方法?



 
你是不是要创建传送类的控件呀
 
这倒不是,不想那么麻烦

我自己有好几个类
想通过TClientSocket,TServerSocket来发送接收
而且接收的时候要判断是哪个类
但是不知道该怎么做
 
Myobject.InstanceSize
 
但是那不对阿

比如你定义一个类是
TFoo = class
s: String
end;
你看看是多少?String是4?
 
你自定义的类都是继承Tobject的,怎么可能是4?
对象都是指针,长度都是4。
不信你试试:
showmessage(inttostr(sizeof(form1)));

还有一点,我觉得用socket传送对象怎么是不可能的。还是老实实地用结构或者把对象的主要信息传送出去就可以了。
 
to 楼主,看样子你用 Java 或者 BPL 封装类比较合适,Socket 传输内容包括 对象 还有类。
 
to Highpeak,
TFoo = class
s: String
end;

你看看Myobject.InstanceSize是多少?

TFoo = class
s: String[100]
end;

你再看看Myobject.InstanceSize是多少?
如果不指定长度,那么仅仅是一个指针
我把指针传给别的机器有用吗?

我不定义record而要定义Class主要是想利用class的继承性
不用定义那么多的结构
 
现在已经解决发送的问题
我定义了一个不是从tobject继承下来的类
TFoo = object
end;

可以继承,可以知道size
但是接收还是有问题
我怎么知道我要接收的是什么类呢?
 
ok

完全搞定了

谢谢各位
 
多人接受答案了。
 
后退
顶部