TSocketconnection连接超时的问题(35分)

  • 主题发起人 主题发起人 bobolyg
  • 开始时间 开始时间
B

bobolyg

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中使用TSocketconnection连接应用服务器,客户端所连接的服务器的主机名和端口是可能改变的,同时是友用户指定的.
问题是:我的代码如: socketconnection1.connected:=true;但如果是用户输入了一个没有安装服务器的主机的时候,客户端执行到这句将等待服务器的响应而中断主线程.我想,
如果在连接之前,用TClientSocket用同样的地址和端口测试连接,也不是个好办法,因为可能不能跨过路游器,如果单独为TsokcetConnection开个线程也不好.
我希望能在主线程里执行TSocketConnection连接,同时如果在5秒钟能连接不通,就马上放弃连接,继续响应其他的操作.
请各位大虾帮我想想办法.所有的积分了,
 
to all
竟然没有一个人愿意帮我?是嫌分太少了吧?我可是全部都奉献给了个为DFW了
 
TSocketConnection没有timeout属性。
可以用一个TPowerSock控件先作试连接。
 
在clientsocket的onerror事件里写你的代码:
var
ErrorMessage :String;
begin
ErrorMessage := '未知错误.';
case ErrorEvent of
eeConnect :
ErrorMessage := '服务器连接失败.';//在这里写入你的代码。active:= false;
eeDisconnect:
begin
ErrorMessage := '因故与服务器断开连接,请重新连接.';
end;
end;
MessageBox(Handle,pChar(ErrorMessage),'Error!!!',MB_ICONWARNING);
ErrorCode :=0;
end;
 
后退
顶部