200分求 IdTCPServer 卡死问题,请各位朋友帮忙啊 先谢谢了

surebaby5 2007-03-07 01:36:16
这个是服务器端IdTCPClient1端的。
都是默认
IdTCPClient1->Host=Edit1->Text;
IdTCPClient1->Port=Edit2->Text.ToInt();
try
{
IdTCPClient1->Connect(10000);
}
catch(EIdException* e)
{

异常处理。。。。
}
try
{
// EnterCriticalSection(&g_cs);//控制入口已去掉
IdTCPClient1->WriteInteger(2);// 用于驱动服务器连接
IdTCPClient1->WriteLn(Memo5->Lines->Strings[0]);// 这个是读memo的第一行
Memo4->Text=IdTCPClient1->ReadLn();//接受服务器返回的值
// IdTCPClient1->Disconnect(); //开启以后就设置为每次回传以后都重新连接。
// LeaveCriticalSection(&g_cs);

}
catch(EIdException* e)
{
IdTCPClient1->Disconnect();// 如果发生异常 就段开服务器
}


IdTCPServer1 部分
服务器部分的TerminateWaitTime 设置为0 。 要不会发送的时候会提示 Terminate out Time

if(AThread->Connection->ReadInteger()==2)//判断线程

{

String a
a=AThread->Connection->ReadLn();

a 为 sql 语句。
处理与数据库的交互信息



AThread->Terminate();//关闭线程
}

catch(EIdException *e)
{
AThread->Terminate();//异常不执行完毕关闭线程
AThread->Stop();//挂起
AThread->Free();//释放


}

}

一般清楚下 都使用完好。 但是如果服务器查询过快 就会死掉 一直抱 Terminate out Time
跪求大哥大姐门 帮帮忙啊。 谢谢拉。


...全文
912 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
nuptwzp 2007-06-18
  • 打赏
  • 举报
回复
我也要的啊。。。
meikeer 2007-05-01
  • 打赏
  • 举报
回复
up
meikeer 2007-04-24
  • 打赏
  • 举报
回复
帮顶,我也遇到这样的问题了
Waiting4you 2007-04-14
  • 打赏
  • 举报
回复
不好意思这么久才回, 我是没看到你有WriteLn所以提醒一下, 不一定要在接收到的时候回的.

服务器接受一个客户端的时候就会建立一个线程的. 关于INDY9的DEMO是因为半年前我在公司无聊时花了两星期时间把Delphi代码转成了C++Builder代码(大约2/3吧,后来没心思了),呵呵,如果要的话我发给你
surebaby5 2007-04-07
  • 打赏
  • 举报
回复


您在上面说 //另外再WriteLn一些回Client,不然那边等晕了
我是操作数据库以后才回的 代码如下

AThread->Connection->WriteLn("<?xml version=\"1.0\" standalone=\"yes\"?>""<NewDataSet>"+XML+"</NewDataSet>");

等个查询数据库应该没事情把

难道非要在一接受的时候就回吗 ?
surebaby5 2007-04-07
  • 打赏
  • 举报
回复
回 毛毛 我现在基本都可以用了 太谢谢你了

如果我不用data 的话 也不会出现问题把

现在我的疑惑有2个
一,AThread->Connection->ReadInteger()==2
这样的时候应该就动态分配了一个线程序给来的程序执行了吧

二,您有DEMO吗 给我份学习 行吗 ?

最后还是和你说声 谢谢啊。
daily66 2007-03-24
  • 打赏
  • 举报
回复
猪猪顺的贴这么红啊?
妖哥都帮顶了
接分是硬道理呀。。。呵呵
Waiting4you 2007-03-24
  • 打赏
  • 举报
回复
对了,另外判断线程可以使用AThread里的Data属性,它类似于VCL控件的Tag属性,给我们自己定义的.
Waiting4you 2007-03-24
  • 打赏
  • 举报
回复
AThread->Terminate();的目的是什么? 我在Indy9的Demo里其本上没看到正常情况下调用这个的,下面这样试试吧? (我对Indy也不是很熟,不要笑话哦)


IdTCPClient1->Host=Edit1->Text;
IdTCPClient1->Port=Edit2->Text.ToInt();
try
{
if(!IdTCPClient1->Connected()) IdTCPClient1->Connect(10000);
}
catch(EIdException* e)
{
//异常处理。。。。
}
try
{
IdTCPClient1->WriteInteger(2);// 用于驱动服务器连接
IdTCPClient1->WriteLn(Memo5->Lines->Strings[0]);// 这个是读memo的第一行
Memo4->Text=IdTCPClient1->ReadLn("", 1000);//接受服务器返回的值,改成这样安心点,呵呵
}
catch(EIdException* e)
{
IdTCPClient1->Disconnect();// 如果发生异常 就段开服务器
}


IdTCPServer1 部分
服务器部分的TerminateWaitTime 设置为0 。 要不会发送的时候会提示 Terminate out Time
//TCPServerExecute(TIdPeerThread *AThread)

if(AThread->Connection->ReadInteger()==2)//判断线程
{
try{
String a=AThread->Connection->ReadLn();
//a 为 sql 语句。
//处理与数据库的交互信息
//另外再WriteLn一些回Client,不然那边等晕了
}
catch(EIdException *e)
{
AThread->Terminate();//异常不执行完毕关闭线程
AThread->Stop();//挂起
AThread->Free();//释放
}
}
daily66 2007-03-24
  • 打赏
  • 举报
回复
不懂三层
dreamnyj 2007-03-09
  • 打赏
  • 举报
回复
是否安装了独立的防火墙,还有XP自带的防火墙

我碰到过类似问题,有时候就是卡死,,原因是XP自带的防火墙和瑞星防火墙
一起拦截API结果只有一个弹出框来。。。另一个没有出框,结果卡死

surebaby5 2007-03-09
  • 打赏
  • 举报
回复
谢谢楼上的 , 晚上 调试下 。 如果成功 分2次 一次100分 。 看到帖子的 还希望 帮忙指点,
constantine 2007-03-08
  • 打赏
  • 举报
回复
server端的代码看不清楚,有点乱,在哪里执行的也不知道
你可以先不做数据库处理,看看会不会,如果还会,就确定是你indy部分代码的问题
如果不会,应该就是数据库处理上有问题,如果太慢,自己开个线程处理,不要在接受到就马上处理
surebaby5 2007-03-08
  • 打赏
  • 举报
回复
回 constantine(飘遥的安吉儿) ,hi 您好 ,

谢谢你了, 我按照你的说法 还是有点问题 ,

还有谁能提供点办法呢 ? 如果速度快的话 还是会提示Terminate out Time
ly_liuyang 2007-03-07
  • 打赏
  • 举报
回复
自己Debug处理
记住一点:Indy自身也不是非常可靠,也有Bug的!
surebaby5 2007-03-07
  • 打赏
  • 举报
回复
在对数据库草操作时注意锁的问题。 已经被我设置为 默认的拉 。。
surebaby5 2007-03-07
  • 打赏
  • 举报
回复
谢谢老蔡啊 。 hoho 都知道 我是猪猪拉 , 猪猪 在这里谢谢你门了。
surebaby5 2007-03-07
  • 打赏
  • 举报
回复
请问下 怎么开始线程。 不是进到服务器线程 就自动分配了吗 ?
samchoy 2007-03-07
  • 打赏
  • 举报
回复
俺不懂网络,帮肉包子兄弟顶一顶
iwenlove 2007-03-07
  • 打赏
  • 举报
回复

在起线程时判断,

在对数据库草操作时注意锁的问题。

加载更多回复(5)
内容概要:本文提出了一种在单向和双向V2G(Vehicle-to-Grid)环境下,对分布式电源与电动汽车充电站进行联合配置的优化方法,并提供了基于Matlab的代码实现。该方法综合考虑了分布式光伏、储能系统以及电动汽车的充放电行为对配电网的影响,构建了一个包含电压偏差、线路容量、设备出力等多种约束条件的多目标优化模型。通过合理规划分布式电源和充电站的位置与容量,旨在提升配电网对新能源的接纳能力,增强系统运行的经济性与稳定性。研究重点对比了单向充电与双向V2G模式下的配置差异,验证了V2G技术在削峰填谷、改善电压质量和降低网络损耗方面的显著优势,体现了其作为灵活资源参与电网互动的潜力。; 适合人群:具备电力系统分析基础、熟悉Matlab编程工具,从事新能源并网、电动汽车与电网互动、智能配电网规划等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于研究高比例电动汽车接入背景下配电网的规划与优化问题;②为含分布式能源的主动配电网提供充电基础设施与电源协同配置方案;③通过仿真对比单向充电与V2G模式对电网影响,评估V2G的调节潜力和服务价值。; 阅读建议:建议结合文中提供的Matlab代码,复现算例仿真过程,深入理解模型构建逻辑与求解流程,同时可拓展考虑更多不确定性因素(如负荷波动、光伏出力随机性)以提升模型实用性。

1,317

社区成员

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

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