我都sendbuf
p=packet record
txt:array [0..2048-4-1] of char;
size:integer;
end;
每次都发同样大小的包
文本实际长度为size;
p=packet record
txt:array [0..2048-4-1] of char;
size:integer;
end;
每次都发同样大小的包
文本实际长度为size;
解决方案 »
- delphi人员,急聘!
- WinExec的用法?
- 我想在数据库存储一个多行文本, 返回的时候要这个文本原封不动的返会
- SQL SERVER 数据库名称的获取
- 弟兄们帮忙看一下,我看一了一个晚上都弄不明白为什么。
- messagebox的显示位置问题
- 使用OpenDialog出现“句柄无效”
- 关于数字在sql中的写法
- 真奇怪,谁做过李维的《分布式多层应用系统篇》2-1-6Master/Detail,为什么我在客户端加入第二个ClientDataSet时ClientDataSet2.DataSetField不能设置为ClientDataSet1.adsDetail?
- Delphi中如何减少文件操作过程中对系统资源的消耗?
- delphi dll高手们请进,我想用dll把一个数据模块包含进
- 谁能提供一个比较好用的 标尺 的控件,告诉我哪里下载就行,马上就给分。
SendBuf,要不然就用UDP.
能不能请大家想个办法,用SendText真的不行吗???
<LENGTH><DATA><LENGTH><DATA>.....
将Text加密后得到长度Length,发送时先发送Length(Integer),再将Text数据发送。
接收方先等待接收Length,收到后就可以确定Text有多少字节,再一并读入。
因为Length是定长的(Integer),所以由长度和数据构成一个帧。简单、有效
OKOK,如果是这样,也在读取数据的事件中按照Length+Data方式,不要一次全部读入。
那么我在接收data的时候,为了保障能够收到length长度的data,就得用
receivebuff而不能用receiveText了!!!???
我想用p:Array[0..255]of Char定长字符数组,用起来
和PChar一样,又是定长,又可以与string 自由转化,
翻工最小!
我最开始想的是用#13#10来分隔,但
由于传输时进行了加密,最终由于隔翻工量大而放弃了,
不过可以解决问题的。
谢谢大家了,分数送上!
有更好方法的,欢迎继续讨论!!!
如果使用定长字符数组的话,会有许多限制:你的数据没法超过256字节,并且大量的带宽被无缘无故浪费掉。如果你的软件有升级的可能的话,则最好一步到位,否则以后会付出代价。
谢谢!