你不是都说出方法了么? 就在DLL中发布一个共享的的Tsocketconnection 或者 var socketconnection: Tsocketconnection 全局变量
function GetSocketconnection(): Tsocketconnection begin Result:=nil; if not Assigned(socketconnection) then socketconnection:=Tsocketconnection.Create(nil); if not socketconnection.Connected then begin try socketconnection.Host:= socketconnection.Port:= socketconnection.Open; except exit; end; end; Result:=socketconnection; end;大概意思是这样
就在DLL中发布一个共享的的Tsocketconnection
或者
var socketconnection: Tsocketconnection 全局变量
function GetSocketconnection(): Tsocketconnection
begin
Result:=nil;
if not Assigned(socketconnection) then
socketconnection:=Tsocketconnection.Create(nil);
if not socketconnection.Connected then
begin
try
socketconnection.Host:=
socketconnection.Port:=
socketconnection.Open;
except
exit;
end;
end;
Result:=socketconnection;
end;大概意思是这样
但是会产生多个连接?不是吧
socketconnection
是只创建一次
连接一次 断线重连 怎么会产生多个连接? 不能理解
不只lz所说连接是sktsvr到数据库的连接,还是客户端与sktsvr的socket连接?
若是前者,只要共享数据库连接就行了。既然是共享的,若sktsvr工作在多线程模式,还要注意线程同步。
若是后者,有几个客户端就需要几个socket连接,这是肯定的。socket就是这样的,不需奇怪。总之,跟是否封装的dll中没有关系。
可在客户端保存服器IP列表,当然连接服务器时 随机连接一台服务器 负载平衡
如果只有一台服务器
在服务程序中创建多个sktsvr监听不同的固定端口
客户端保存固定端口列表 随机连接一个服务器的端口
或者另外写一个sktsvr ?
http://tech.techweb.com.cn/thread-338156-1-1.html
Exe + BPL + DLL 结构的程序.
看看是不是你那里设置出错了
如果是多个exe共享一个socket连接,就是多个不同的进程之间进行通信,只由其中的一个进程发起socket连接,要处理的就是windows IPC相关技术了。有很多可以选择,比如利用内存映射文件,利用管道,甚至仍然利用socket...