Socket的怪问题

haozi112 2003-11-24 08:41:58
我用ClientSocket 和 ServerSocket做连接,出现了这样一种情况,
每次启动连接的时候,都要ConnectButton Click 两次才能连接得上,我是在本机上测试的,不存在网络延迟的问题啊,程序代码是这样的:
if(ServerEdit->Text != ""&& NumEdit->Text != "" && PswEdit->Text != "")
{
DataModule1->ClientSocket->Address = ServerEdit->Text;
DataModule1->SocketConnect->Address = ServerEdit->Text;
MESSAGE_TO* msg = new MESSAGE_TO;
msg->num = StrToInt(NumEdit->Text);
msg->require = REQUIRE_LOGIN;
strcpy(msg->text ,PswEdit->Text.c_str());
try
{
DataModule1->ClientSocket->Open();
DataModule1->ClientSocket->Socket->SendBuf(msg,sizeof(MESSAGE_TO));
if(DataModule1->ClientSocket->Active)//就是在里了,非要第2次连接才能通过
{
LogButton->Enabled = false;
delete msg;
}

}
catch(...)
{
MessageBox(NULL,"连接服务器失败","出错信息",MB_OK|MB_ICONERROR);
delete msg;
}



}
else MessageBox(NULL,"登陆验证数据不完整","错误信息",MB_OK|MB_ICONERROR);


why??????????????????????????????????
...全文
30 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi112 2003-11-25
  • 打赏
  • 举报
回复
哦,问题解决了,谢谢,等我做完了课程设计就来结贴
Lewolf 2003-11-24
  • 打赏
  • 举报
回复
ClientSocket->Active是一个“异步”属性,也就是说在执行了Open或者Active = true以后,函数是立即返回了,但是并不一定是链接成功了,必须在OnConnect事件中来确定链接成功的。这个不象Table或者Query是同步属性,设置属性以后是立即得到结果的。

1,317

社区成员

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

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