SocketConnection在Internet(非LAN)的应用/实验结果如何?(对于有建设性的讨论,额外加上300又何妨?)(300分)

  • 主题发起人 主题发起人 房客
  • 开始时间 开始时间
哪里老大,可以给小弟一个用midas 下的socket connection作三层数据结构的例子,
或者告诉我如何用SOCKET CONNECTION出可以(但服务程序如何做。。。)
我会用DCOM CONNECTION?????
多多指教了!!!!!!!!!!!!!!!!!!!!!!1!
中秋可以请大家喝茶。。。。。。。
 
还有客户突然断开,服务端怎么知道并删除
 
如果客户突然断开,服务器的 IConnectionPointContainer 能否知道?
 
我用PIII800,256M内存,一个不大的服务程序。当客户端达到50的时候,服务器就有点累了,
如果工作站又加上些突然关机呀等一些非法操作后,服务器就很容易出错!那个Scktsrvr.exe
也很容易出错!
 
Client端突然的断开,如断电,TServerClientThread确是无法得知,而我们一般将Server的TimeOut
没有去设它,所以在Server的ClientThread中一直阻塞的线程,占用资源。我们能做的事,就是加一个
TTime时间控件,并且在Server端口的TimeOut中加入一个确定的时间,当客户端在这个时间内没有响应的话
就把它给Kill.
//当时间到了,就调用RefreshClient来刷新客户端长时间(TimeOut要设置)的连接。
procedure TSocketForm.RefreshClient;
var
I: Integer;
Thread: TServerClientThread;
begin
for I := 0 to ConnectionList.Count - 1do
begin

Thread := ConnectionList.Items.Objects;
if Assigned(Thread) then
PostThreadMessage(Thread.ThreadID, WM_USER, 0, 0);
//唤醒MsgWaitForMultipleObjects
end;
end;

//在这增加两行代码,来响应SockForm的PostThreadMessage
procedure TSocketDispatcherThread.ClientExecute;
.....
begin
..................
WAIT_OBJECT_0 + 1:
begin
//加入以下代码,确定是否连接超时。
if (FTimeout > 0) and ((Now - FLastActivity) > FTimeout) then
FTransport.Connected := False;
//断开连接
       //   
while PeekMessage(msg, 0, 0, 0, PM_REMOVE)do
DispatchMessage(msg);
end;
WAIT_TIMEOUT:
....
...
end;
一点小见,说错莫怪。
还有我写了个TSocketConnectionEx的组件,可以直接进行下载和上传文件,希望大家帮忙测试一下,谢谢。
http://www.csdn.net/filebbs/read_topic.asp?id=992
 
1。这个问题现在看起来选择更多了
上限是一定有的
国内有人写了KCOM
国外就更多了
和DCOM一样都是 COM的变种
如果是选择WIN平台 COM+是归属啊
2。有些朋友说LAN内如何?
我们能否考虑做个指定端口的代理服务器来响应CLIENT的要求:)
3。再次呼吁放弃WIN98开发平台(服务器端)吧
尽管MS的DCOM95、DCOM98。。。。。(MSDN下载)
还是问题多啊
目前DCOM最佳选择 WIN XP(废话:),当然是MS的最新OS咯)
4。关于JAVA和CORBA的执行效率,多平台的朋友确实值得投入。。
 
听听。。。
 
后退
顶部