事件间的通信问题
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。但如何在主程序内得到结果呢?
好象有挺多这种情况的,应该有一个机制来处理吧,是不是可以用消息来处理?