有个问题想问一下,我看到有一些开发大型数据库有这样一个功能。就是
能看到有哪些客户端连到服务器了。如果不想让他连接还可也把它踢下去这什用什么原理实现的
能看到有哪些客户端连到服务器了。如果不想让他连接还可也把它踢下去这什用什么原理实现的
解决方案 »
- 我的创建文件夹程序哪错了?
- 今天生日,散点分!
- vb如何取得公网IP?
- PopupMenu 怎么搞的.
- 刚学ado连接sql server,错在哪里?
- 在VB中如何使用WIN32API函数
- 请教一个VB控制word进行编程的问题
- 请问用Addnew和Update为记录集添加行数据的时候,游标是不是可以不MoveNext?
- 请问沦浪客大哥在何处可以找到DTPicker控件
- 我想结合主域服务器的组、用户等,一句话,就是能用API完成域用户管理器的工作,是不是很复杂呢?另外,我是针对NT4,并不是对于WIN2000(因为WIN2000可以用ADSI),怎么办呢?高手们可以写一段程序给我学习吗?
- 怎么样用 VB 开发 COM 加载项 (Office 插件 如:金山词霸2003 的 Word 插件一样)?
- 怎么样设置相对路径?
您想知道有誰正在使用您的 Access 資料庫嗎?
如果您使用 Access 建立了一個多人使用的資料庫環境,有時候您必須要知道有誰正在使用程式連進這個共享的資料庫,但是您又不想因為如此而要建立一套完整的 Access 安全系統,您有二個選擇:第一個: 您可以在資料庫中建立一個 "Login Table",每次使用者進入或離開系統時就 Update 這個 Table.
第二個: 較好一點,您可以使用 msldbusr.dll,它可以告訴您目前正連進資料庫的電腦名稱 (Computer Name),這些資料其實是存放在副檔名為 LDB 的檔案中。一旦您從 DLL 中抓到這些資料,您便可以送出訊息,通知 Client 端的使用者 (Remote User) 結束應用程式,以中斷和資料庫的連結,然後您便可以使用 Exclusive Mode 來維護資料庫了。 在這裡,我們要說明的是第二種方法,也就是使用 msldbusr.dll。它提供了二個 Function,說明如下:1、LDBUser_GetUsers:呼叫後會傳回二部份,一個是使用者陣列,一個是連結到資料庫的使用者數。Declare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" (lpszUserBuffer() _
As String, ByVal lpszFilename As String, ByVal nOptions As Long) As IntegerlpszUserBuffer():傳回使用者陣列,注意!必須使用 ReDim 宣告成變動陣列!
lpszFilename:資料庫名稱 ( .mdb 完整路徑 ),若 .ldb 檔不存在,會傳回錯誤代碼。
nOptions:下參數宣告資料回傳的型態。可以使用的參數有四個,如下:1=傳回自從 .ldb 產生後,所有曾經使用資料庫的使用者機器名稱 (Computer Name) 及數目。
2=只傳回目前正在使用資料庫的使用者機器名稱 (Computer Name) 及數目。
4=只傳回導致目前資料庫損毀的使用者機器名稱 (Computer Name)。
8=只傳回使用者的總數,但是並不傳回使用者陣列。2、LDBUser_GetError:呼叫 LDBUser_GetUsers 若有錯誤產生,可根據傳回的錯誤代碼找到說明。Declare Function LDBUser_GetError Lib "MSLDBUSR.DLL" (ByVal nErrorNo As Long) As StringnErrorNo:呼叫 LDBUser_GetUsers 產生錯誤所傳回的代碼,介於 -1 至 -14 之間。說明如下:-1 = Can't open the LDB file. ( 無法開啟 LDB 檔案 )
-2 = No user connected. ( 沒有使用者在使用資料庫 )
-3 = Can't create an array. ( 無法建立陣列 )
-4 = Can't redimension array. ( 無法重新建立陣列 )
-5 = Invalid argument passed. ( 傳入無效的參數 )
-6 = Memory allocation error. ( 記憶体配置錯誤 )
-7 = Bad index. ( 無效的索引 )
-8 = Out of memory. ( 記憶体不足 )
-9 = Invalid argument. ( 無效的參數 )
-10= LDB is suspected as corrupted. ( LDB 檔案可能損毀 )
-11= Invalid argument. ( 無效的參數 )
-12= Unable to read MDB file. ( 無法讀取 MDB 檔案 )
-13= Can't open the MDB file. ( 無法開啟 MDB 檔案 )
-14= Can't find the LDB file. ( 找不到 LDB 檔案 )'範例程式:( 移除所有的 Form,請將以下程式複製到 .bas 檔案中即可執行 )Option ExplicitDeclare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" (lpszUserBuffer() _
As String, ByVal lpszFilename As String, ByVal nOptions As Long) As IntegerDeclare Function LDBUser_GetError Lib "MSLDBUSR.DLL" (ByVal nErrorNo As Long) As StringSub MAIN()
Dim psMDBFilename As String
psMDBFilename = InputBox("請輸入資料庫名稱:")
If Len(psMDBFilename) Then
ShowUsers psMDBFilename
End If
End Sub
Sub ShowUsers(psFilename As String)
ReDim lpszUserBuffer(1) As String
Dim psError As String
Dim cUsers As Long
Dim iLoop As Long'呼叫 LDBUser_GetUsers 傳回使用者陣列
cUsers = LDBUser_GetUsers(lpszUserBuffer(), psFilename, 1)'確認是否傳回使用者陣列
If (cUsers = 0) Then
Debug.Print "No Users."
GoTo Exit_ShowUsers
End If'若有錯誤則顯示錯誤訊息
If (cUsers < 0) Then
psError = LDBUser_GetError(cUsers)
Debug.Print "Error #:"; cUsers; "--"; psError
GoTo Exit_ShowUsers
End If'顯示使用者陣列
For iLoop = 1 To cUsers
Debug.Print "User "; iLoop; ":"; lpszUserBuffer(iLoop)
Next iLoopExit_ShowUsers:
End Sub
上边的资料也许对你有用,你也可以查找下边的网址
http://www.cndevx.com/tips/default.asp?page=2&sub_kind=&title=
轮询的方法在小范围还可以,可是,众多客户的情况又怎么样呢?
由客户端发送信息,超时的删掉,怎样?