棘手的数据库问题. 用winsock为什么不行呢?这个方法几乎是最好的了. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果真的要用winsock,该从哪入手?不过我现在觉得winsock方法不是最好的.也可能是我对winsock不是很熟!在服务器上得到客户机的ip地址,怎么样才能自动得到客户机的ip地址?客户机如何自动得到服务器的ip地址开始侦听? 不过除了winsock之外有什么更好的方法?现在同类的程序在这方面都是怎么实现的? 你可以在客户机启动的时候发一个消息到服务器,这样服务器就可以得到客户机的IP服务器的IP只好你自己指定了 其实我觉得不必要一定用客户端侦听的方法。你可以用服务器来传消息。你在服务器上做一个程序,专门用来监视数据库并收发消息。 客户端程序启动时,发送本地IP地址到服务器上注册,关闭时再到服务器上去注销 。 服务器上用TIMER 或其他方法检测到数据库的变化时, 就发消息到各工作站,各工作站收到消息后转去相应的处理过程。工作站中需要能保存服务器的IP地址,做为配置文件保存下来,每次程序启动时自动注册。用WINSOCK 可以,当然有其他更好的通信控件也可以。用上面的方法,工作站不需要有timer , 只在服务器上有一个,相信速度会快很多。 如果真需要如此及时的更新,恐怕就算实现了,也要付出巨大的代价。不仅是服务器,而且客户端也是。试试服务端,客户端数据库同步。看看是否适合你的程序。我在http://www.wzjcw.net/vbgood/ 看到过有关数据库同步的文章! 我觉得icevi(按钮工厂)的做法不错。我刚写了一个类似的程序,我用的全是winsock,客户端登录时通过winsock与服务端建立连接,并通过发送简单命令字串给服务端来完成各项数据库操作。不知道你的这个数据库是否有其他程序可以修改,如果是那样,那么直接用timer是最快的;如果所有的数据库更新都要通过你的服务端在操作,那么可以在执行完数据库操作后,由服务端向各登录客户端发送数据更新消息。 你可以考虑在数据库中使用触发器,当数据发生变化的时候,在触发器中使用sp_OACreate等访问服务器上的OLE 对象(传递发生变化的纪录的ID),服务器上的OLE 对象使用Winsock发送发生变化的纪录的ID到所有的客户端程序,客户端程序搜索数据库显示所有的变化的纪录。 数据库需要x台客户机的访问(1<x<最大数),现在的问题就是在服务器端不能驻留任何形式的后台程序,我想能不能在客户端程序不扫描服务器数据库,用sql server的存储过程或者是触发器自动返回改变的值?hydnoahark(诺亚方舟)的方法好像不错,让我测试测试!请大家说说还有什么好的方法?最好是不用winsock发送纪录的!因为我觉得在客户端多的时候用winsock一次一次的发不一定就比Timer快. 在sql_server中判断连接机制,若有连接则在连接数上加1. 如果只是为了减少数据的传输量建议你在数据库中做一个只有一个字段,一条记录的表,这条记录的内容是最新更新的时间(用触发器更新该记录)你的Timer读纪录的时候,先读这个纪录,并记录下来,每次读的时间更上次读的时间比较,如果时间更新了,就说明需要显示的数据更新了,再去读要显示的数据,那就可以降低系统资源了 to ozw(沧浪客)我现在用的就是这个算法!就是这个算法速度还是慢!主要是网络流量不够快!毕竟主要原因还是一秒钟执行一次存储过程受不了呀! 请教一问,不使用RC.EXE和LINK.EXE能生成RC和RES文件么?ResHacker是怎么做到的?? VB中调用dos命令 API在VB中应用之技巧集锦(1) 关于数组存取!(基础) 请问VB6.0中有没有时间控件 关于录音设备的选择问题 送分求助!!!!! 还是关于mscomm的问题,up有分 高分请教,COMBOBOX多列显示的问题????有人知道吗? 如何用VB程序取得CPU序列号? CSDN的高手,你们这么了? 关于关闭窗体的问题。
不过我现在觉得winsock方法不是最好的.
也可能是我对winsock不是很熟!
在服务器上得到客户机的ip地址,怎么样才能自动得到客户机的ip地址?
客户机如何自动得到服务器的ip地址开始侦听?
现在同类的程序在这方面都是怎么实现的?
服务器的IP只好你自己指定了
你可以用服务器来传消息。你在服务器上做一个程序,专门用来监视数据库并收发消息。 客户端程序启动时,发送本地IP地址到服务器上注册,关闭时再到服务器上去注销 。 服务器上用TIMER 或其他方法检测到数据库的变化时, 就发消息到各工作站,各工作站收到消息后转去相应的处理过程。工作站中需要能保存服务器的IP地址,做为配置文件保存下来,每次程序启动时自动注册。用WINSOCK 可以,当然有其他更好的通信控件也可以。用上面的方法,工作站不需要有timer , 只在服务器上有一个,相信速度会快很多。
我刚写了一个类似的程序,我用的全是winsock,客户端登录时通过winsock与服务端建立连接,并通过发送简单命令字串给服务端来完成各项数据库操作。
不知道你的这个数据库是否有其他程序可以修改,如果是那样,那么直接用timer是最快的;
如果所有的数据库更新都要通过你的服务端在操作,那么可以在执行完数据库操作后,由服务端向
各登录客户端发送数据更新消息。
hydnoahark(诺亚方舟)的方法好像不错,让我测试测试!
请大家说说还有什么好的方法?最好是不用winsock发送纪录的!
因为我觉得在客户端多的时候用winsock一次一次的发不一定就比Timer快.
建议你在数据库中做一个只有一个字段,一条记录的表,这条记录的内容是最新更新的时间(用触发器更新该记录)
你的Timer读纪录的时候,先读这个纪录,并记录下来,每次读的时间更上次读的时间比较,如果时间更新了,就说明需要显示的数据更新了,再去读要显示的数据,那就可以降低系统资源了
我现在用的就是这个算法!就是这个算法速度还是慢!主要是网络流量不够快!
毕竟主要原因还是一秒钟执行一次存储过程受不了呀!