几个关于三层连接的问题,请教了。(200分)

  • 主题发起人 yanghaijun
  • 开始时间
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
1、我现在用 Delphi 7,是否可以使用高版本的 ScktSrvr.exe,这样做合适吗?比如我用 Delphi2009 的 ScktSrvr.exe。是否要同步更新 MIDAS.DLL 文件?
2、Delphi2009 的 ScktSrvr.exe 是否存在旧版的那些问题?
3、在编程时,如果我想在一个线程中打开主线程 TSocketConnection 以便主程序的界面不至于在连接过程中不能响应,是否可行?因为在主程序中使用 SocketConnection.Connect 时界面只能死在那里,毫无反应。我曾经在线程里这样做(已经在主程序中定义了 SocketConnection1):
procedure TRemoteConnectThread.Execute;
begin
try
frmUpdate.SocketConnection1.Open;
except
;
end;
end;
SocketConnection 是连接了,但是当我在主程序中做如下调用时:
RemoteConnectThread:=TRemoteConnectThread.Create(True);
RemoteConnectThread.Resume;
RemoteConnectThread.WaitFor;
RemoteConnectThread.Free;
//此时调试检查 SocketConnection1 已经 Connected
SocketConnection1.AppServer.CheckUser(InParam,RetVal);
出现错误:Expected return Value not received.
当我使用:
SocketConnection1.Open;
SocketConnection1.AppServer.CheckUser(InParam,RetVal);
则没有错误发生,不知何故。而如果我在线程里而使用 Synchronize,就不会发生错误,但此时主程序界面就在连接过程中失去响应,失去了意义。
4、使用 TWebConnection 是否可以很好地避免 TSocketConnection 的 BUG?在效能上相差到底有多远?
 
Y

yangying_2000

Unregistered / Unconfirmed
GUEST, unregistred user!
1.不合适,scktsrvr有源码,在delphi目录里去找,有问题自己改就是了
2.没测试过,不知道有没有源码,有的话你可以自己比较下
3.应该是可以的,SocketConnection1.AppServer.CheckUser(InParam,RetVal);在这句前面加个if判断下是否connected试试.你那段生成线程的语句最好不要在formcreate里面做.
4.TWEBCONNECTION效能差不多,bug就不知道了.
 
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
关于 3. 不要在 formcreate 里做?我想一开始就运行这个检查,那在哪里更合适呢?
 
Y

ycluo

Unregistered / Unconfirmed
GUEST, unregistred user!
楼主咱们交个朋友!我也是正在搞三层,msn:tiansoft68@hotmail.com, QQ:214979744,
skype:robert88838
 
顶部