C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-27 #1 定义了一个RECORD,如何通过SOCKET传输?用SOCKET 如果搞大了是对象呢?(对象传输好象比较麻烦) 最近我的问题没人回答,难道大家对我有意见? 如果有告诉我吧
Z zx Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-27 #2 总因该定义一个格式, 其实,socket传输的不过是二进制, 你可以自己定义他的格式,好象, 比如 是包含几个string的record 就应该把string做上标记,接收过去 以后再重新组合成record. (我记得,好象讨论过,传递后的顺序大乱了) 至于对象,那么比较麻烦,要不然,怎么有 RMI,或着远程对象调用呢? 想当然!
总因该定义一个格式, 其实,socket传输的不过是二进制, 你可以自己定义他的格式,好象, 比如 是包含几个string的record 就应该把string做上标记,接收过去 以后再重新组合成record. (我记得,好象讨论过,传递后的顺序大乱了) 至于对象,那么比较麻烦,要不然,怎么有 RMI,或着远程对象调用呢? 想当然!
Z zx Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-27 #3 CJ:不要多心!大家会对你有什么意见? 可能是你的问题比较难.....:-%
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-29 #6 对象就有,直接TmemoryStream.WriteComponent,当然此对象必须至少从 TPersistent派生,对于非Published 属性要自己重载DefineProperty 我写过用Sockets发送对象的程序,CJ兄有没有兴趣?
对象就有,直接TmemoryStream.WriteComponent,当然此对象必须至少从 TPersistent派生,对于非Published 属性要自己重载DefineProperty 我写过用Sockets发送对象的程序,CJ兄有没有兴趣?
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-29 #7 Record也不难吧,直接用TMemoryStream的方法逐个写入Record的各个值,然后 顺序读出就行了。
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-29 #8 当然有,也不必那么复杂,只要 RECORD 就可以 比如我定义了一个人事管理的记录,然后打包,发送 最好有例子,就可以,麻烦TQZ兄了
T tqz Unregistered / Unconfirmed GUEST, unregistred user! 1999-03-30 #9 我以前写过这样的一个简单程序,所谓的网络白板,写着玩的,呵呵 最近比较忙,所以没空另写,也没空改了。或许它会有所帮助。 别怪我写得难看,我没准备给人看的 <a href="ftp://202.120.100.49/pub/WhiteBoard/WhiteBoard.zip">Whiteboard</a> 建议采用强力下载工具,否则本校的网络...hehe
我以前写过这样的一个简单程序,所谓的网络白板,写着玩的,呵呵 最近比较忙,所以没空另写,也没空改了。或许它会有所帮助。 别怪我写得难看,我没准备给人看的 <a href="ftp://202.120.100.49/pub/WhiteBoard/WhiteBoard.zip">Whiteboard</a> 建议采用强力下载工具,否则本校的网络...hehe
C CJ Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-05 #11 TQZ大侠公里深厚,小弟实在看不懂 谁能给个看的懂的例子?只要 RECORD 就可以
Z zhaoyipeng Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-06 #12 似乎ACE也问了一个类似的问题,现将答案再贴一遍 type TMyRecord = record //... end; var ARec: TMyRecord; Buf: array [0..SizeOf(TMyRecord)-1] of Char; begin Move(Buf, ARec, SizeOf(TMyRecord)); end;
似乎ACE也问了一个类似的问题,现将答案再贴一遍 type TMyRecord = record //... end; var ARec: TMyRecord; Buf: array [0..SizeOf(TMyRecord)-1] of Char; begin Move(Buf, ARec, SizeOf(TMyRecord)); end;
L last_hero Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-28 #16 用指针把RECORD转换成字节型数据发送,接收时进行逆转换。 例: type aRecordDef=record sEx:string; ..... end; procedure PutData; var pRecord:^aRecordDef;//记录指针 buf:array[0..100] of byte; //数组 begin pRecord:=@(buf[0]); //记录赋值 pRecord^.sEx:=.....; ..... //结束,也可用pRecord^:=antherRecord的方式 //然后,就是发送buf数据 ... end; procedure PutData; var pRecord:^aRecordDef;//记录指针 buf:array[0..100] of byte; //数组 begin //接收数据到buf .... // pRecord:=@(buf[0]); //记录取值 antherRecord:=pRecord^; ... end;
用指针把RECORD转换成字节型数据发送,接收时进行逆转换。 例: type aRecordDef=record sEx:string; ..... end; procedure PutData; var pRecord:^aRecordDef;//记录指针 buf:array[0..100] of byte; //数组 begin pRecord:=@(buf[0]); //记录赋值 pRecord^.sEx:=.....; ..... //结束,也可用pRecord^:=antherRecord的方式 //然后,就是发送buf数据 ... end; procedure PutData; var pRecord:^aRecordDef;//记录指针 buf:array[0..100] of byte; //数组 begin //接收数据到buf .... // pRecord:=@(buf[0]); //记录取值 antherRecord:=pRecord^; ... end;
L last_hero Unregistered / Unconfirmed GUEST, unregistred user! 1999-04-28 #17 如果是对象,好象可以用定义buf绝对地址的方法解决。 就是让buf的起始地址与对象的地址相同。 至于定义绝对地址的关键字,...,忘了。