IdTCPServer 读取数据 错误客户端发送一组数据,63个,但是Server 接收到数据后, Edit 中显示的却只有 4 个
IdTCPServer 读取数据 错误
客户端发送一组数据,63个,但是Server 接收到数据后, Edit 中显示的却只有 4 个
void_fastcall TForm::IdTCPServer1Execute(TIdPeerThread *AThread)
{
String sCommand;
sCommand = AThread ->Connection -> ReadLn();
Memo1 -> Lines ->Add(sCommand);
Edit1 -> Text = sizeof(sCommand);
}
[最优解释]sCommand是一个String对象, 你不能简单的用sizeof来获取其大小. 用String对象的Length方法才是王道, 如:
Edit1->Text = sCommand.Length();
[其他解释]还是不对啊,
Edit里 显示的变成 1 和 2 了, 1 跟 2 在不停的变换刷新
[其他解释]你把每次收到的sCommand的内容贴出来看看。
[其他解释]AA 55 C2 39 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 04
这个是客户端发过来的数据,服务端接收以后,先算出接收到的长度,然后在辨别字头AA 55 C2,然后进行数据处理,
我买的书里面介绍 indy 的太少了,网上没找到具体的例程,一些主要的方法也不怎么清楚,然后就用的 sizeof
[其他解释]用 sizeof 的时候 Memo 里显示的是 一个中文和一个符号 "猆?" , 显示的是 4 ,
Length() 显示的是 零 ,隔一段时间显示另外 一个数字,抓不到,不是 1 和 2,我弄错了
[其他解释]该回复于2012-11-06 10:13:42被管理员删除