请教:TSocketConnection的相关问题(100)

  • 主题发起人 fatalexception
  • 开始时间
F

fatalexception

Unregistered / Unconfirmed
GUEST, unregistred user!
1、跟踪执行发现,即使服务器端scktsrvr拒绝连接,TSocketConnection也要调用TTransportThread.Execute,并导致程序停止响应。根据我的理解,“Transport”部分是传送数据用的。既然连接都没有成功建立,为什么还要传送数据呢?  2、在TSocketConnection.Open内部,究竟都执行了些什么操作? 3、执行TSocketConnection.Open时,如果服务器端有问题,则客户端会停止响应很长时间,甚至死掉。请问,这是死在哪个部分、哪行代码上了?跟踪不能跟踪到所有的步骤,有些步骤是跟踪不到源码的。 4、Socket应该有Listen、Accept等操作,Delphi都给封装在里面了,看源码也理不出顺序来。请给简单说一说:源码的层次和执行顺序如何?哪些代码是一次性的(例如初始化)?哪些代码是对每个客户端都要执行的(例如Accept)?
 
S

smlabc

Unregistered / Unconfirmed
GUEST, unregistred user!
通讯的别用控件,自己用API写吧
 
S

stlont

Unregistered / Unconfirmed
GUEST, unregistred user!
根据我以前做三层系统的经验,给你一些建议以做参考:1.代码中必须有容错设计,如果无法连接,或是服务端没启动socketserver,都是可以捕获的,不会卡死,仔细检查自己的错误捕获代码2.delphi自带有socket和midas demo,看其代码和演示,可以解决绝大部分问题,企业版也带有全部VCL源码,可以自己查看3.如果有使用远程数据库,在连接成功后才能打开表,设计阶段将表置于打开状态是个导致卡住的常见错误
 
顶部