我用控件TClientSocket去连接服务端,非阻塞方式
第一次ClientSocket1.Active := True是成功的
当我需要断开,执行 ClientSocket1.Active := False 后,
再次需要连接,执行 ClientSocket1.Active := True 后,值仍然是false,也没捕捉到错误,
只有再次 执行ClientSocket1.Active := True才会成功,奇怪!我用阻塞方式时没有这个问题,但OnRead上又不能读到消息,需要另外写线程去接收.请各位大侠出手!
第一次ClientSocket1.Active := True是成功的
当我需要断开,执行 ClientSocket1.Active := False 后,
再次需要连接,执行 ClientSocket1.Active := True 后,值仍然是false,也没捕捉到错误,
只有再次 执行ClientSocket1.Active := True才会成功,奇怪!我用阻塞方式时没有这个问题,但OnRead上又不能读到消息,需要另外写线程去接收.请各位大侠出手!
解决方案 »
- delphi TUSER 控件
- 远程数据库连接?出错就卡在那...我新手,只剩20分了!
- intraweb 中 动态显示多个相同的图片
- 如何获取 flash 播放器 里的文件? 还有 swandream 你也来啊
- 关于DBGridEH的问题,100分奉上。
- 请问怎么删除一个文件夹
- 各位高手,菜鸟我再问一个第三方组件的问题
- dbgrid的大小有限 不能完全吧所有的字段都显示出来 要通过滚动条拖动 能不能判断某个字段在显示?还是不在显示
- 求教DELPHI问题!!!
- 各位帮帮忙来出道题
- 100分求解决,使用MSCOMM控件发中文短信问题
- ADO访问access数据库,"2002/1/1 9:00:00" 在dbgrid中显示的是"2002/1/1"
在非阻塞方式下面,OPEN和CLOSE都是异步操作。
一般的做法可以用一个消息处理循环等待它。Clientsocket.Close;//或者ClientSocket.Active:=false;一样。。
while ClientSocket.Active then
begin
Application.processmessages;
end;OPEN时候做法也一样。