首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-03-06 
想要一个在indy10下,用内存流发送结构的例子,最好是同步通信的使用BCB2010,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;    }}//--------------------------------------- 

热点排行