使用indy10tcp客户端发送包含0x0的数据咋处置呢
使用indy10tcp客户端发送包含0x0的数据咋处理呢?
我调试了一下。

能看到,包含了0的数据,他自动截断了。
我的数据里有0这种数据,该咋发送呢?
谢谢。
------解决方案--------------------
发送了5个字节,接受的时候也取5个字节,看看后面字节对不对
------解决方案--------------------
包含0x0的数据,那么,发送/接收/显示,都不能当字符串,因为字符串遇到0x0就当作结束了。
------解决方案--------------------
不使用 AnsiString 改用 C++ 的标准 string 就可以了,反正我在VC下用string 处理 0 数据可以,BCB不知道
TIdBytes MY_BS;
AnsiString M_S;
int Buf_len;
if(IdTCPClient_1->Connected())
{
//随便整理数据,
M_S = "00000" + Edit_data->Text;
MY_BS = M_S.BytesOf();//转成二进制
Buf_len = M_S.Length();
MY_BS.set_length(Buf_len);
MY_BS[0] = 0x18;
MY_BS[1] = 0x0;//这个是关键
MY_BS[2] = 0x02;
MY_BS[3] = 0x22;
MY_BS[4] = 0x28;
IdTCPClient_1->IOHandler->Write(MY_BS);
Memo_info->Lines->Add(M_S);
}
else
{
Memo_info->Lines->Add("已断开!" );
}
我调试了一下。
能看到,包含了0的数据,他自动截断了。
我的数据里有0这种数据,该咋发送呢?
谢谢。
------解决方案--------------------
发送了5个字节,接受的时候也取5个字节,看看后面字节对不对
------解决方案--------------------
包含0x0的数据,那么,发送/接收/显示,都不能当字符串,因为字符串遇到0x0就当作结束了。
------解决方案--------------------
不使用 AnsiString 改用 C++ 的标准 string 就可以了,反正我在VC下用string 处理 0 数据可以,BCB不知道