想要一个在indy10下,用内存流发送结构的例子,最好是同步通信的解决办法

想要一个在indy10下,用内存流发送结构的例子,最好是同步通信的
使用BCB2010,indy10,需要内存流发送结构的例子,最好是同步通信的

------解决方案--------------------
探讨

另外,如果只发送TMemoryStream的Memory部分,接收端怎样接收呢

------解决方案--------------------
探讨

我实在看不出以上代码的问题

------解决方案--------------------
enUTF8是一个字符集 是一种针对Unicode的可便长度字元编码(定长码)
由于CB2010默认的Unicode编码
所以在发送接收的时候制定enUTF8方式去处理就行了

“读出数据怎么样操作呢
还要写入流中然后read或者readbuffer吗”

str 就是读出来的数据了 已经是看得见的一个字符串了 
你还要写到流里去干嘛?
------解决方案--------------------
我在8楼的代码里

Strm->ReadBuffer(&aComuniContent,sizeof(comuniContent));
这段代码已经还原成结构体了
C/C++ code

void __fastcall TForm2::IdTCPServer1Execute(TIdContext *AContext)
{
    comuniContent aComuniContent ;
    userInfo aUser;
    pCInfo CInfo ;
    TMemoryStream  * Strm = new TMemoryStream ();
    try
    {
        try
        {
            //这里直接转换成结构体了
            AContext->Connection->IOHandler->ReadStream(Strm,sizeof(comuniContent));
            Strm->Position  = 0 ;
            //
            //注意 这个地方还原了结构体aComuniContent
            //  
            Strm->ReadBuffer(&aComuniContent,sizeof(comuniContent));
            //得到了结构体了 
            aUser  = aComuniContent.user;
            CInfo  = aComuniContent.host ;
            //其他的结构体类似 你自己去完成吧
            Memo1->Lines->Add("唯一标识符:"+AnsiString(aComuniContent.SN));
            Memo1->Lines->Add("用户名:"+AnsiString(aUser.name));
            Memo1->Lines->Add("密码:"+AnsiString(aUser.passWord));
            Memo1->Lines->Add("计算机名字:"+AnsiString(CInfo.pCName));
            Memo1->Lines->Add("IP地址:"+AnsiString(CInfo.pCIP));
            Memo1->Lines->Add("MAC地址:"+AnsiString(CInfo.nWMak));
            Memo1->Lines->Add("端口号:"+AnsiString(CInfo.port));
        }
        catch (Exception &e)
        {
            Memo1->Lines->Add("读取登录信息异常");
        }
    }
    __finally
    {
        delete Strm;
    }
}
//---------------------------------------