BCB2010中IdUDPServer接收数据的问题

tulipcaicai 2011-07-27 01:30:30
在IdUDPServer的UDPRead事件中,如何处理TBytes AData?比如说我想接收的内容是汉字。

void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData,
TIdSocketHandle *ABinding)
{
try
{
wchar_t *a = new wchar_t(AData.Length);
//a = &AData[0] ;
String s = a;
s = s.SubString(0,AData.Length);
Memo1->Lines->Add(ABinding->PeerIP +": " + s);
}
catch(...)
{

}
}


void __fastcall TForm1::Button3Click(TObject *Sender)
{
this->IdUDPClient1->Send("我发的是一串汉字!");
}
...全文
251 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
缘中人 2013-11-09
  • 打赏
  • 举报
回复
IdUDPClient1->Send("我", IndyTextEncoding_OSDefault());
tulipcaicai 2011-08-02
  • 打赏
  • 举报
回复
谢谢妖哥,结贴。
ccrun.com 2011-07-29
  • 打赏
  • 举报
回复
我来了。
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread, TBytes AData, TIdSocketHandle *ABinding)
{
for (int i = 0; i < AData.Length; i++)
{
Memo1->Lines->Add(IntToHex(AData[i], 2));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
byte btBuffer[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
TByteDynArray bda;
int nLen = sizeof(btBuffer);
bda.set_length(nLen);
for (int i = 0; i < nLen; i++)
{
bda[i] = btBuffer[i];
}

IdUDPClient1->SendBuffer(bda);
}
tulipcaicai 2011-07-29
  • 打赏
  • 举报
回复
自己再顶
rickys2080 2011-07-29
  • 打赏
  • 举报
回复
我这几天也在搞这个,学习一下
tulipcaicai 2011-07-27
  • 打赏
  • 举报
回复
妖哥,如果我现在想在 IdUDPClient1->Send() 中,发送二进制的内容,比如一个byte的数组,数组里的元素全是十六进制数。

ccrun.com 2011-07-27
  • 打赏
  • 举报
回复
书籍是没有的,学习全靠自己瞎琢磨。
tulipcaicai 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ccrun 的回复:]

指定一下字符集就行了。
C/C++ code
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread,
TBytes AData, TIdSocketHandle *ABinding)
{
Memo1->Lines->Add(BytesToString(AData, TEnco……
[/Quote]
果然如此,妖哥给力!!
妖哥有没有BCB2010的书籍啊? 这个字符集弄的有点晕晕的啊
ccrun.com 2011-07-27
  • 打赏
  • 举报
回复
指定一下字符集就行了。
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread,
TBytes AData, TIdSocketHandle *ABinding)
{
Memo1->Lines->Add(BytesToString(AData, TEncoding::Unicode));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
IdUDPClient1->Send("我了个艹abc", TEncoding::Unicode);
}
tulipcaicai 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ccrun 的回复:]

C/C++ code
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread,
TBytes AData, TIdSocketHandle *ABinding)
{
Memo1->Lines->Add(BytesToString(AData));
}
[/Quote]

妖哥,这个办法不行,显示的是乱码。
ccrun.com 2011-07-27
  • 打赏
  • 举报
回复
void __fastcall TForm1::IdUDPServer1UDPRead(TIdUDPListenerThread *AThread,
TBytes AData, TIdSocketHandle *ABinding)
{
Memo1->Lines->Add(BytesToString(AData));
}

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧