事件间的通信问题

wuhuar 2010-06-08 10:58:06
void __fastcall TForm1::Button3Click(TObject *Sender)
{
ClientSocket1->Address="192.168.1.1";
ClientSocket1->Port = 80;
ClientSocket1->Open();
//如何在这个函数得到端口开放或未开放呢?
if (ClientSocket1->Active) ShowMessage("哈哈,端口开放"); //这句showmessage不会执行,因为Open()后,马上就执行了下一行,那时端口还没有打开。在这里设一个等待时间也不太合适吧。
}

void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
// ShowMessage("端口未开放");
ErrorCode=0;
}

void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{
//ShowMessage("端口开放");
}

问题:
调用ClientSocket1->Open();会通过SOCKET去打开端口,但是不会返回结果,而是在打开成功时,触发ClientSocket1Connect,打开失败时,触发ClientSocket1Error。但如何在主程序内得到结果呢?

好象有挺多这种情况的,应该有一个机制来处理吧,是不是可以用消息来处理?
...全文
35 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
周药师 2010-06-08
  • 打赏
  • 举报
回复
既然想用消息来处理 还不如直接用socket api

552

社区成员

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

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