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??????????????????????????????????
...全文
33 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi112 2003-11-25
  • 打赏
  • 举报
回复
哦,问题解决了,谢谢,等我做完了课程设计就来结贴
Lewolf 2003-11-24
  • 打赏
  • 举报
回复
ClientSocket->Active是一个“异步”属性,也就是说在执行了Open或者Active = true以后,函数是立即返回了,但是并不一定是链接成功了,必须在OnConnect事件中来确定链接成功的。这个不象Table或者Query是同步属性,设置属性以后是立即得到结果的。
什么是HPSocket HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中[1]  。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前运行在 Windows 平台,将来会实现跨平台支持。 --- 百度百科 什么是异步, 什么是同步 "HPsocket所有组件都是异步的"  我记得我开始学习HP的时候看见这行字我内心是崩溃的. 我觉得一些聊天室/游戏什么的才用异步,  那么我专门写一些网关中间件什么的.   常用的是"应答式(同步)".  即: 发送<--->响应.  类似http请求, 但不会断开客户端 异步: 专门绑定一个事件, 收到的所有数据都投送给事件处理.    适合聊天室/游戏等等 同步: 发送后等待响应, 获取响应数据后继续向下执行.   不需要绑定事件什么的.  类似post, 不会断开连接就是了 为什么做这个玩意 记得是去年开始学习hp的,   当时在群"物乐园"询问如何实现同步.   与某(忘记了)个管理发生了py交易.   他热心的帮助我写了一个"PACK模型"的同步操作例子. 之后应用在一个项目中并不理想,  因为PACK模型是整个包发送,  有大小限制,  还经常出现问题. 今年一个项目想用HP的PULL模型,  所以自己分析那个大神给的例子.    终于魔改封装出了一个"PULL模型"的同步操作类. 之前有易友希望我开源,  其实我早就想开源了的,  因为需要从项目中分离出来太麻烦了, 而且工作忙(上班),  所以就拖到了今天

1,317

社区成员

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

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