bcb之socket编程

xjq2003 2009-06-05 09:48:55
我想通过网络向设备(led屏)iP:192.168.244.250 端口号:2929
发送数据,比如发送unsigned char buf[1024];
中的数据,
请问是用BCB中的
TClientSocket *ClientSocket1;
TServerSocket *ServerSocket1;
TUdpSocket *UdpSocket1;
这三个用那个发送啊,如何发送?

谢谢解答回复!
有代码更好,谢谢各位大侠
...全文
699 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
对牛乱弹琴 2012-02-05
  • 打赏
  • 举报
回复
Mark,留着
ccrun.com 2009-06-06
  • 打赏
  • 举报
回复
汗。。。既然用RAD2009,那就用Indy组件。TIdTCPClient
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
c++builder 2009
中怎么找不到TClientSocket *ClientSocket1;
TServerSocket *ServerSocket1;
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
char buf[1024]={'A','B','C','D'};
String ss=String(buf);

ClientSocket->Socket->SendBuf(buf,1024);

ClientSocket->Socket->SendText(ss);
两个作用是一样的吗,是不是都和向串口发送数据一样啊??
发unsigned char buf[1024];只能用ClientSocket->Socket->SendBuf(buf,1024);???

我不懂电脑 2009-06-06
  • 打赏
  • 举报
回复
ClientSocket在bcb2009中
好像有问题,建议用indy的TIdTcpClient
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
谢谢各位大侠的回复,使用ClientSocket完成了工作,代码贴出来以备以后使用,呵呵

void __fastcall TMainFrm::FormCreate(TObject *Sender)
{
TIniFile *ini;
ini=new TIniFile(".//SAS_Config.ini");
LedIp=ini->ReadString("infLED","LEDIP","192.168.224.250");
ini->WriteString("infLED","LEDIP",LedIp);

COMx=ini->ReadInteger("infLED","端口",2929);
ini->WriteInteger("infLED","端口",COMx);
LEDIpPort=COMx;
delete ini;
try
{

ClientSocket1->Active=false;
ClientSocket1->Address=LedIp;
//ClientSocket1->Host=LedIp;
ClientSocket1->Port=LEDIpPort;
//ClientSocket1->Open();
ClientSocket1->Active=true;
}
catch(...)
{
//
}
}
void sendbuf(unsigned char * buf,int bufIndex)
{
try
{
//ClientSocket1->Close();
//ClientSocket1->Active=false;
//ClientSocket1->Address=LedIp;
//ClientSocket1->Port=LEDIpPort;
//ClientSocket1->Open();
ClientSocket1->Active=true;
ClientSocket1->Socket->SendBuf(buf,bufIndex);
//ClientSocket1->Close();
}
catch(...)
{
//
}
}
void __fastcall TMainFrm::ClientSocket1Read(TObject *Sender, TCustomWinSocket *Socket)

{
///客户端读取信息
try
{
AnsiString Msg=Socket->ReceiveText();
unsigned char buf[100];
if(Msg.Length()<99)
{
strcpy(buf,Msg.c_str());
String ss="";
for(int i=0;i<Msg.Length();i++)
{
ss+=IntToHex(buf[i],2);
ss+=",";
}
InfoLedEdt->Text=ss;
}
///判断是不是自己发出的信息
// if(Msg!=Memo2->Lines->Strings[Memo2->Lines->Count-1])
// Memo2->Lines->Add(Msg);
}
catch(...)
{
//
}
}
void __fastcall TMainFrm::ClientSocket1Connect(TObject *Sender, TCustomWinSocket *Socket)

{
try
{
AnsiString Msg="连接成功-" + Socket->RemoteHost +"[地址]" + Socket->RemoteAddress + "[端口]" + IntToStr(Socket->RemotePort);
InfoLedEdt->Text=Msg;
}
catch(...)
{
//
}
}

void __fastcall TMainFrm::ClientSocket1Disconnect(TObject *Sender, TCustomWinSocket *Socket)

{
AnsiString Msg="信息显示屏连接断开..." ;
InfoLedEdt->Text=Msg;
}
yangangs 2009-06-06
  • 打赏
  • 举报
回复
支持用TIdTcpClient,看看帮助吧,要不自己试试就行了
Leeheliang 2009-06-06
  • 打赏
  • 举报
回复
支持支持
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
ClientSocket在bcb2009中找到了,代码这样写可以吗?

unsigned char buf[2060]={0,0,0,0,0,0,0,0,0,0};
int bufIndex=1024,
ClientSocket1->Close();
ClientSocket1->Host="192.168.244.250";
ClientSocket1->Port=2929;
ClientSocket1->Open();
ClientSocket1->Active=true;
ClientSocket1->Socket->SendBuf(buf,bufIndex);
ClientSocket1->Close();
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 songhtao 的回复:]
ClientSocket在bcb2009中
好像有问题,建议用indy的TIdTcpClient
[/Quote]
TIdTcpClient怎么用啊,没有用过,给点提示可以吗?
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
IdTCPClient可以用了,但不知道怎么发送unsigned char buf[1024];数据
xjq2003 2009-06-06
  • 打赏
  • 举报
回复
我的TIdTCPClient不能用啊!!

妖哥比较专业,

我对网络编程一窍不通,汗颜啊!

使用TcpClient可以吗??

TcpClient1->Active=true;
TcpClient1->SendBuf(buf,bufIndex);
TcpClient1->Active=false;

代码这样写就可以吗??
周药师 2009-06-05
  • 打赏
  • 举报
回复
记得好像是$(BCB)\Examples下的Indy 目录下有TClientSocket 、 TServerSocket
的简单例子
ccrun.com 2009-06-05
  • 打赏
  • 举报
回复
看看这个例子,用ClientSocket做的:
$(BCB)\Examples\Internet\Chat
Behard 2009-06-05
  • 打赏
  • 举报
回复
不是吧,这种代码网上太多了吧

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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