專利名稱:在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法
技術領域:
本發(fā)明涉及多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中異構節(jié)點之間的應用服務資源共享和數(shù)據(jù)共享技術領域,尤其涉及一種在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法。
背景技術:
隨著網(wǎng)絡技術和移動通信技術的發(fā)展和成熟,信息資源和計算資源共享變得越來越普遍,人們對于移動辦公和娛樂的需求也在不斷增加。網(wǎng)絡已經(jīng)成為人們工作、學習、生活中獲取信息和進行交互的一種重要途徑,對遠程節(jié)點上的應用服務的訪問和使用十分普遍。
目前的遠程網(wǎng)絡應用服務中,基于服務器的方式應用非常普遍。該方式支持遠程訪問傳統(tǒng)的桌面圖形交互式應用程序,不需要任何修改,所有的應用程序都在服務器端安裝和維護,客戶端使用簡單的終端設備通過網(wǎng)絡訪問服務器上提供的各種應用程序。現(xiàn)有的基于服務器方式的協(xié)議有Citrix ICA,Microsoft RDP,Sun Ray,VNC等。
基于服務器方式中,終端用戶的計算環(huán)境局限在一個服務節(jié)點上,當用戶需要訪問其他服務節(jié)點上的應用程序時,需要多次登錄。并且,登錄之后,又需要手工地在不同的服務節(jié)點間切換。因此,不能同時透明地管理和控制多個服務節(jié)點上的應用,給用戶操作帶來很多不便,用戶體驗較差。
于是,多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)的集成虛擬桌面技術應運而生。該系統(tǒng)主要是提供一個集成虛擬桌面,多個服務節(jié)點的應用服務集成到虛擬桌面中,用戶只需要一次登錄即可實現(xiàn)對不同服務節(jié)點上的桌面圖形交互式應用程序的訪問,通過終端同時透明地訪問和運行多個服務節(jié)點上的應用服務,給用戶以較好的體驗。在同一虛擬桌面中,兩個來自不同服務節(jié)點的應用程序往往需要實現(xiàn)在線數(shù)據(jù)共享。例如,在桌面中運行Windows平臺的記事本和Linux平臺的kword兩個文本編輯工具,如何在記事本和kword之間實現(xiàn)文本的復制和粘貼是常常遇到的難題。
在集成虛擬桌面下,來自同一服務節(jié)點的不同應用程序之間的數(shù)據(jù)復制工作等同于在該服務節(jié)點上的傳統(tǒng)操作,可以通過服務節(jié)點提供的系統(tǒng)剪貼板進行數(shù)據(jù)的共享和傳遞。但是,對于來自不同服務節(jié)點特別是異構服務節(jié)點的應用程序,并沒有一個實現(xiàn)剪貼板的數(shù)據(jù)共享和傳遞的機制。
發(fā)明內(nèi)容
(一)要解決的技術問題有鑒于此,本發(fā)明的主要目的在于提供一種在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,以在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)的異構服務節(jié)點之間實現(xiàn)剪貼板資源的共享和傳遞。
(二)技術方案為達到上述目的,本發(fā)明提供了一種在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,該方法包括A、預先將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,并設置統(tǒng)一的通信機制在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容;B、在集成虛擬桌面上對第一服務節(jié)點的應用程序進行復制/剪切操作,將該復制/剪切操作信息傳遞給第一服務節(jié)點;C、第一服務節(jié)點接收到所述復制/剪切操作信息,將剪貼板內(nèi)容轉換成所述統(tǒng)一的字符串格式,采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點,第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;D、在集成虛擬桌面上對第二服務節(jié)點的應用程序進行粘貼操作,第二服務節(jié)點將更新后的剪貼板內(nèi)容粘貼到自身的應用程序上。
上述方案中,步驟A中所述統(tǒng)一的字符串格式為string字符串格式,所述統(tǒng)一的通信機制為SOCKET消息通信機制。
上述方案中,步驟B中所述將該復制/剪切操作信息傳遞給第一服務節(jié)點經(jīng)由通信通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第一服務節(jié)點代理進程”進行傳遞。
上述方案中,在WINDOWS操作系統(tǒng)下,步驟C中所述第一服務節(jié)點接收所述復制/剪切操作信息通過監(jiān)聽本地剪貼板內(nèi)容是否發(fā)生變化來實現(xiàn),具體包括WINDOWS操作系統(tǒng)提供固定的剪貼板發(fā)生變化的消息WM_DRAWCLIPBOARD;當?shù)谝环展?jié)點監(jiān)聽到WM_DRAWCLIPBOARD系統(tǒng)消息時,第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化。
上述方案中,在WINDOWS操作系統(tǒng)下,步驟C中所述第一服務節(jié)點采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點包括第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化后,由代理進程判斷剪貼板變化的內(nèi)容是否為來自本地應用程序的復制/剪切操作,如果是,則采用所述統(tǒng)一的SOCKET消息通信機制經(jīng)由通道“第一服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向集成虛擬桌面發(fā)送一個剪貼板內(nèi)容發(fā)生變化的消息,同時將剪貼板的內(nèi)容轉換成所述統(tǒng)一的字符串格式發(fā)送給集成虛擬桌面;集成虛擬桌面收到第一服務節(jié)點的剪貼板內(nèi)容發(fā)生變化的消息,讀取SOCKET的內(nèi)容,將SOCKET傳遞的剪貼板的內(nèi)容以String格式存儲,同時,將剪貼板更新消息和接收的剪貼板內(nèi)容以SOCKET的方式傳送給第二服務節(jié)點;如果不是來自本地應用程序的復制/剪切操作,則忽略。
上述方案中,在WINDOWS操作系統(tǒng)下,步驟C中所述第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容包括第二服務節(jié)點接收到剪貼板更新消息和剪貼板內(nèi)容,將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;然后進一步根據(jù)監(jiān)聽到剪貼板內(nèi)容變化消息WM_DRAWCLIPBOARD,判斷該剪貼板變化的內(nèi)容是否為來自本地應用程序的復制/剪切操作。
上述方案中,在LINUX操作系統(tǒng)下,步驟C中所述第一服務節(jié)點接收所述復制/剪切操作信息通過監(jiān)聽本地剪貼板內(nèi)容是否發(fā)生變化來實現(xiàn),具體包括X窗口系統(tǒng)利用選擇selection實現(xiàn)LINUX文本控制臺的剪切cut與粘貼paste功能;LINUX操作系統(tǒng)預定義了兩種選擇XA_PRIMARY和XA_CLIPBOARD;在X窗口下啟動一個Xclipboard應用程序,并申請該程序為XA_CLIPBOARD選擇的擁有者;當X窗口下某應用程序A進行復制操作時,應用程序A獲得XA_CLIPBOARD選擇的擁有權;當Xclipboard失去XA_CLIPBOARD選擇的擁有權時,調(diào)用回調(diào)函數(shù)向應用程序A請求獲取XA_CLIPBOARD的內(nèi)容;同時,Xclipboard再次申請自己為XA_CLIPBOARD的擁有者,并向第一服務節(jié)點發(fā)送剪貼板內(nèi)容發(fā)生變化的消息。
上述方案中,在LINUX操作系統(tǒng)下,步驟C中所述第一服務節(jié)點采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點包括第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化后,將剪貼板的內(nèi)容轉換成所述統(tǒng)一的字符串格式,然后采用所述統(tǒng)一的SOCKET消息通信機制經(jīng)由通道“第一服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向集成虛擬桌面發(fā)送剪貼板內(nèi)容發(fā)生變化的消息,同時將剪貼板的內(nèi)容發(fā)送給集成虛擬桌面;集成虛擬桌面收到第一服務節(jié)點的剪貼板內(nèi)容發(fā)生變化的消息,讀取SOCKET的內(nèi)容,將SOCKET傳遞的剪貼板的內(nèi)容以String格式存儲,同時,將剪貼板更新消息和接收的剪貼板內(nèi)容以SOCKET的方式傳送給第二服務節(jié)點。
上述方案中,在LINUX操作系統(tǒng)下,步驟C中所述第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容包括第二服務節(jié)點接收到剪貼板更新消息和剪貼板內(nèi)容,代理進程向Xclipboard應用程序發(fā)送一個更新剪貼板消息;Xclipboard應用程序收到消息后,將XA_CLIPBOARD設置為代理進程傳遞的剪貼板內(nèi)容。
上述方案中,所述步驟D包括在集成虛擬桌面上向第二服務節(jié)點的應用程序發(fā)送粘貼操作請求,粘貼操作請求通過集成虛擬桌面與第二服務節(jié)點之間的網(wǎng)絡連接通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第二服務節(jié)點代理進程”發(fā)送到第二服務節(jié)點;第二服務節(jié)點對該請求處理后向集成虛擬桌面返回反饋消息,更新后的剪貼板內(nèi)容粘貼在屬于第二服務節(jié)點的應用程序上。
(三)有益效果從上述技術方案可以看出,本發(fā)明具有以下有益效果
1、利用本發(fā)明,通過將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,并設置統(tǒng)一的通信機制在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容,在集成虛擬桌面下利用客戶端作為中轉站,在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)的異構服務節(jié)點之間實現(xiàn)了剪貼板資源的共享和傳遞。
2、利用本發(fā)明,由于在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)的異構服務節(jié)點之間實現(xiàn)了剪貼板資源的共享和傳遞,所以在由不同服務節(jié)點提供的應用程序之間能進行無縫的復制、剪切和粘貼等操作,。
3、集成虛擬桌面是一個獨立應用程序,與本地的操作系統(tǒng)無關,因此本發(fā)明剪貼板的數(shù)據(jù)傳遞發(fā)生在虛擬桌面程序以及該程序訪問的各服務節(jié)點之間,與虛擬桌面所在的本地操作系統(tǒng)無必然聯(lián)系。
4、本發(fā)明使用戶在集成虛擬桌面下,任意兩個應用程序之間都能進行無縫的剪貼板數(shù)據(jù)共享和傳遞,完全忽略了服務節(jié)點操作系統(tǒng)的不同,給用戶提供了更友好的體驗和更強大的計算環(huán)境。
圖1為本發(fā)明提供的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法流程圖;圖2為依照本發(fā)明實施例在異構網(wǎng)絡應用服務系統(tǒng)中多服務節(jié)點之間的剪貼板共享示意圖;圖3為依照本發(fā)明實施例在異構節(jié)點之間剪貼板共享的工作過程示意圖。
具體實施例方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,以下結合具體實施例,并參照附圖,對本發(fā)明進一步詳細說明。
如圖1所示,圖1為本發(fā)明提供的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法流程圖,該方法包括以下步驟步驟101預先將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,并設置統(tǒng)一的通信機制在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容;步驟102在集成虛擬桌面上對第一服務節(jié)點的應用程序進行復制/剪切操作,將該復制/剪切操作信息傳遞給第一服務節(jié)點;步驟103第一服務節(jié)點接收到所述復制/剪切操作信息,將剪貼板內(nèi)容轉換成所述統(tǒng)一的字符串格式,采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點,第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;步驟104在集成虛擬桌面上對第二服務節(jié)點的應用程序進行粘貼操作,第二服務節(jié)點將更新后的剪貼板內(nèi)容粘貼到自身的應用程序上,實現(xiàn)剪貼板共享。
上述步驟101中,所述統(tǒng)一的字符串格式為string字符串格式,所述統(tǒng)一的通信機制為SOCKET消息通信機制。
這里,之所以將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,是由于在多節(jié)點智能網(wǎng)絡應用環(huán)境中,異構服務節(jié)點之間的剪貼板的數(shù)據(jù)格式不完全一致,這也導致了異構服務節(jié)點之間的剪貼板數(shù)據(jù)的共享。因此,本發(fā)明給將剪貼板數(shù)據(jù)內(nèi)容定義成統(tǒng)一的string字符串格式。
另外,目前在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中,各服務節(jié)點之間也沒有統(tǒng)一的消息通信機制,即使將剪貼板數(shù)據(jù)內(nèi)容設置成了統(tǒng)一的字符串格式,仍然無法在各服務節(jié)點之間實現(xiàn)剪貼板數(shù)據(jù)的共享。因此,本發(fā)明還設置統(tǒng)一的SOCKET消息通信機制,用于在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容,并在集成虛擬桌面下利用客戶端作為中轉站,對連接的多服務節(jié)點(包括同構節(jié)點和異構節(jié)點)的應用程序之間實現(xiàn)剪貼板數(shù)據(jù)共享和數(shù)據(jù)傳遞。在集成虛擬桌面下,使由不同服務節(jié)點提供的應用程序之間能夠進行無縫的“復制”、“粘貼”和“剪切”等操作。
集成虛擬桌面是一個獨立應用程序,與本地的操作系統(tǒng)無關,因此本發(fā)明剪貼板的數(shù)據(jù)傳遞發(fā)生在虛擬桌面程序以及該程序訪問的各服務節(jié)點之間,與虛擬桌面所在的本地操作系統(tǒng)無必然聯(lián)系。
如圖2所示,圖2為依照本發(fā)明實施例在異構網(wǎng)絡應用服務系統(tǒng)中多服務節(jié)點之間的剪貼板共享示意圖。在圖2中,顯示有客戶端集成虛擬桌面和多個提供應用服務的服務節(jié)點。所述服務結點包括第一服務節(jié)點、第二服務節(jié)點和第三服務節(jié)點,這些服務節(jié)點的操作系統(tǒng)是異構的。本發(fā)明所有的工作需要多個服務節(jié)點和客戶端的集成虛擬桌面程序相互合作,其中服務節(jié)點和客戶端都是獨立運行的,建立網(wǎng)絡連接后通過網(wǎng)絡SOCKET消息通信機制進行通信。
本發(fā)明提供的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法包括設計剪貼板監(jiān)聽、剪貼板通信和剪貼板更新三個步驟,以及設計實現(xiàn)這三個步驟所必須的消息通信機制,具體包括1、剪貼板監(jiān)聽以及實現(xiàn)該步驟所需要的消息通信機制。第一服務節(jié)點的代理進程監(jiān)聽服務器端剪貼板內(nèi)容的變化,并且判斷變化的內(nèi)容是否為來自該服務器應用程序進行的復制或剪切操作。如果不是,則忽略。由服務代理進程監(jiān)聽,是為了滿足廣域環(huán)境的應用需求。
2、剪貼板通信以及實現(xiàn)該步驟所需要的消息通信機制。第一服務節(jié)點的代理進程通過通信通道“服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”發(fā)送消息至集成虛擬桌面,并把需要傳遞的剪貼板內(nèi)容轉換成字符串格式傳送給集成虛擬桌面,由在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法轉發(fā)給其他的服務節(jié)點。
3、剪貼板更新以及實現(xiàn)該步驟所需要的消息通信機制。第二服務節(jié)點和第三服務節(jié)點的代理進程通過“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→服務節(jié)點代理進程”通道獲得來自集成虛擬桌面?zhèn)鬟f的剪貼板內(nèi)容,將字符格式轉換成本地剪貼板要求的數(shù)據(jù)格式,然后更新本地剪貼板。
下面結合附圖2和附圖3,對本發(fā)明的實施方式和實現(xiàn)過程作功能性描述。在圖2中,用戶在客戶端虛擬桌面上運行來自不同服務節(jié)點的應用程序,如窗口1是第一服務節(jié)點提供的應用程序,窗口2是節(jié)第二服務點提供的應用程序,窗口3的程序由第三服務節(jié)點提供的應用程序。圖3描述異構操作系統(tǒng)服務節(jié)點之間實現(xiàn)剪貼板共享的詳細過程。
根據(jù)圖3所示的在異構節(jié)點之間剪貼板共享的工作過程示意圖,本發(fā)明的“復制”“粘貼”具體實施過程如下1、剪貼板監(jiān)聽剪貼板監(jiān)聽步驟在第一服務節(jié)點進行,如圖3中的過程1到過程3所示。
過程1,用戶在集成虛擬桌面上對第一服務節(jié)點提供的應用程序進行“復制”操作。
過程2,用戶在集成虛擬桌面下對第→服務節(jié)點的應用程序的“復制”操作經(jīng)由通信通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第一服務節(jié)點代理進程”傳遞給第一服務節(jié)點的應用程序。在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)下,虛擬桌面上的應用程序實際是在后臺服務節(jié)點上運行。過程1進行的“復制”操作實際上等同于在第一服務節(jié)點的應用程序上進行“復制”操作。
過程3,第一服務節(jié)點的代理進程監(jiān)聽本地剪貼板內(nèi)容的變化。在WINDOWS操作系統(tǒng)下和LINUX操作系統(tǒng)下,監(jiān)聽剪貼板的方式不一樣a)在WINDOWS操作系統(tǒng)下,系統(tǒng)提供固定的剪貼板發(fā)生變化的消息WM_DRAWCLIPBOARD。當剪貼板內(nèi)容發(fā)生改變時,也即,當?shù)谝环展?jié)點代理進程監(jiān)聽到WM_DRAWCLIPBOARD系統(tǒng)消息時,進行下一步操作。
b)在LINUX操作系統(tǒng)下,X窗口系統(tǒng)沒有提供類似于WINDOWS操作系統(tǒng)下的單獨預留出一塊全局的剪貼板內(nèi)存,而是用“選擇(selection)”實現(xiàn)LINUX文本控制臺的剪切(cut)與粘貼(paste)功能。LINUX操作系統(tǒng)預定義了兩種選擇XA_PRIMARY和XA_CLIPBOARD。在X窗口下啟動一個Xclipboard應用程序,并申請該程序為XA_CLIPBOARD選擇的擁有者。當X窗口下其他應用程序(如A)進行“復制”操作時,A獲得XA_CLIPBOARD選擇的擁有權。當Xclipboard失去XA_CLIPBOARD選擇的擁有權時,調(diào)用回調(diào)函數(shù)向A請求獲取XA_CLIPBOARD的內(nèi)容。同時,Xclipboard再次申請自己為XA_CLIPBOARD的擁有者,并向第一服務節(jié)點的代理進程發(fā)送剪貼板內(nèi)容發(fā)生變化的消息。
2、剪貼板通信剪貼板通信是本發(fā)明的核心步驟,涉及到集成虛擬桌面、會話主控進程、多個服務節(jié)點,貫穿了整個應用服務,如圖3的過程4和過程5所示。
過程4,當?shù)谝环展?jié)點的代理進程監(jiān)聽到剪貼板內(nèi)容發(fā)生變化的消息a)在WINDOWS操作系統(tǒng)下,需要由代理進程判斷剪貼板變化的內(nèi)容是否來自本地應用程序的“復制”操作,如果是,則通過SOCKET通道“服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向虛擬桌面發(fā)送一個剪貼板內(nèi)容發(fā)生變化的消息,同時將剪貼板的內(nèi)容轉換成字符串格式,發(fā)送給客戶端;如果否,則忽略。
b)在LINUX操作系統(tǒng)下,無需判斷,先將剪貼板的內(nèi)容轉換成字符串格式,然后由通道“第一服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向虛擬桌面發(fā)送剪貼板內(nèi)容發(fā)生變化的消息,同時傳送剪貼板內(nèi)容給客戶端。
過程5,集成虛擬桌面收到第一服務節(jié)點的剪貼板內(nèi)容發(fā)生變化的消息,讀取SOCKET的內(nèi)容,將SOCKET傳遞的剪貼板的內(nèi)容以String格式存儲。同時,客戶端代理搜索其他已連接的服務節(jié)點,依次向其他已連接的第一服務節(jié)點和第二服務節(jié)點發(fā)送剪貼板更新消息,并將剛接收的剪貼板內(nèi)容以SOCKET的方式傳送給第一服務節(jié)點和第二服務節(jié)點。
3.剪貼板更新剪貼板更新步驟如圖3的過程6到過程8所示。
過程6,第二服務節(jié)點接收到客戶端代理發(fā)送過來的剪貼板更新消息a)在WINDOWS操作系統(tǒng)下,更新本地剪貼板內(nèi)容。此時,服務器代理進程監(jiān)聽到剪貼板內(nèi)容的變化的消息WM_DRAWCLIPBOARD,判斷該剪貼板變化的內(nèi)容不是來自本地應用程序的“復制”操作,所以忽略。
b)在LINUX操作系統(tǒng)下,代理進程向Xclipboard應用程序發(fā)送一個更新剪貼板消息。Xclipboard應用程序收到消息后,將XA_CLIPBOARD設置為代理進程傳遞的剪貼板內(nèi)容。
過程7,用戶在虛擬桌面對所屬第二服務節(jié)點的應用程序進行“粘貼”操作。
過程8,“粘貼”操作請求通過客戶端代理與第二服務節(jié)點代理之間的網(wǎng)絡連接通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第二服務節(jié)點代理進程”發(fā)送給第二服務節(jié)點。第二服務節(jié)點對該請求處理后,消息反饋給集成虛擬桌面,更新后的剪貼板內(nèi)容粘貼在所屬第二服務節(jié)點的應用程序上。
在本發(fā)明所舉這個實施例中,是以在異構節(jié)點之間實現(xiàn)“復制”“粘貼操作過程為例進行說明的。在實際應用中,所述“剪切”“粘貼”操作過程與“復制”“粘貼操作過程是一致的,僅將“復制”替換成“剪切”即可。這樣的技術方案與本發(fā)明提供的技術方案在技術思路上是一致的,應包含在本發(fā)明的保護范圍之內(nèi)。
以上所述的具體實施例,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,該方法包括A、預先將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,并設置統(tǒng)一的通信機制在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容;B、在集成虛擬桌面上對第一服務節(jié)點的應用程序進行復制/剪切操作,將該復制/剪切操作信息傳遞給第一服務節(jié)點;C、第一服務節(jié)點接收到所述復制/剪切操作信息,將剪貼板內(nèi)容轉換成所述統(tǒng)一的字符串格式,采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點,第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;D、在集成虛擬桌面上對第二服務節(jié)點的應用程序進行粘貼操作,第二服務節(jié)點將更新后的剪貼板內(nèi)容粘貼到自身的應用程序上。
2.根據(jù)權利要求1所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,步驟A中所述統(tǒng)一的字符串格式為string字符串格式,所述統(tǒng)一的通信機制為SOCKET消息通信機制。
3.根據(jù)權利要求1所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,步驟B中所述將該復制/剪切操作信息傳遞給第一服務節(jié)點經(jīng)由通信通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第一服務節(jié)點代理進程”進行傳遞。
4.根據(jù)權利要求1所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在WINDOWS操作系統(tǒng)下,步驟C中所述第一服務節(jié)點接收所述復制/剪切操作信息通過監(jiān)聽本地剪貼板內(nèi)容是否發(fā)生變化來實現(xiàn),具體包括WINDOWS操作系統(tǒng)提供固定的剪貼板發(fā)生變化的消息WM_DRAWCLIPBOARD;當?shù)谝环展?jié)點監(jiān)聽到WM_DRAWCLIPBOARD系統(tǒng)消息時,第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化。
5.根據(jù)權利要求4所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在WINDOWS操作系統(tǒng)下,步驟C中所述第一服務節(jié)點采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點包括第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化后,由代理進程判斷剪貼板變化的內(nèi)容是否為來自本地應用程序的復制/剪切操作,如果是,則采用所述統(tǒng)一的SOCKET消息通信機制經(jīng)由通道“第一服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向集成虛擬桌面發(fā)送一個剪貼板內(nèi)容發(fā)生變化的消息,同時將剪貼板的內(nèi)容轉換成所述統(tǒng)一的字符串格式發(fā)送給集成虛擬桌面;集成虛擬桌面收到第一服務節(jié)點的剪貼板內(nèi)容發(fā)生變化的消息,讀取SOCKET的內(nèi)容,將SOCKET傳遞的剪貼板的內(nèi)容以String格式存儲,同時,將剪貼板更新消息和接收的剪貼板內(nèi)容以SOCKET的方式傳送給第二服務節(jié)點;如果不是來自本地應用程序的復制/剪切操作,則忽略。
6.根據(jù)權利要求5所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在WINDOWS操作系統(tǒng)下,步驟C中所述第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容包括第二服務節(jié)點接收到剪貼板更新消息和剪貼板內(nèi)容,將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;然后進一步根據(jù)監(jiān)聽到剪貼板內(nèi)容變化消息WM_DRAWCLIPBOARD,判斷該剪貼板變化的內(nèi)容是否為來自本地應用程序的復制/剪切操作。
7.根據(jù)權利要求1所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在LINUX操作系統(tǒng)下,步驟C中所述第一服務節(jié)點接收所述復制/剪切操作信息通過監(jiān)聽本地剪貼板內(nèi)容是否發(fā)生變化來實現(xiàn),具體包括X窗口系統(tǒng)利用選擇selection實現(xiàn)LINUX文本控制臺的剪切cut與粘貼paste功能;LINUX操作系統(tǒng)預定義了兩種選擇XA_PRIMARY和XA_CLIPBOARD;在X窗口下啟動一個Xclipboard應用程序,并申請該程序為XA_CLIPBOARD選擇的擁有者;當X窗口下某應用程序A進行復制操作時,應用程序A獲得XA_CLIPBOARD選擇的擁有權;當Xclipboard失去XA_CLIPBOARD選擇的擁有權時,調(diào)用回調(diào)函數(shù)向應用程序A請求獲取XA_CLIPBOARD的內(nèi)容;同時,Xclipboard再次申請自己為XA_CLIPBOARD的擁有者,并向第一服務節(jié)點發(fā)送剪貼板內(nèi)容發(fā)生變化的消息。
8.根據(jù)權利要求7所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在LINUX操作系統(tǒng)下,步驟C中所述第一服務節(jié)點采用所述統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點包括第一服務節(jié)點監(jiān)聽到本地剪貼板內(nèi)容發(fā)生變化后,將剪貼板的內(nèi)容轉換成所述統(tǒng)一的字符串格式,然后采用所述統(tǒng)一的SOCKET消息通信機制經(jīng)由通道“第一服務節(jié)點代理進程→會話節(jié)點主控進程→客戶端代理進程→集成虛擬桌面進程”向集成虛擬桌面發(fā)送剪貼板內(nèi)容發(fā)生變化的消息,同時將剪貼板的內(nèi)容發(fā)送給集成虛擬桌面;集成虛擬桌面收到第一服務節(jié)點的剪貼板內(nèi)容發(fā)生變化的消息,讀取SOCKET的內(nèi)容,將SOCKET傳遞的剪貼板的內(nèi)容以String格式存儲,同時,將剪貼板更新消息和接收的剪貼板內(nèi)容以SOCKET的方式傳送給第二服務節(jié)點。
9.根據(jù)權利要求8所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,在LINUX操作系統(tǒng)下,步驟C中所述第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容包括第二服務節(jié)點接收到剪貼板更新消息和剪貼板內(nèi)容,代理進程向Xclipboard應用程序發(fā)送一個更新剪貼板消息;Xclipboard應用程序收到消息后,將XA_CLIPBOARD設置為代理進程傳遞的剪貼板內(nèi)容。
10.根據(jù)權利要求1所述的在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,其特征在于,所述步驟D包括在集成虛擬桌面上向第二服務節(jié)點的應用程序發(fā)送粘貼操作請求,粘貼操作請求通過集成虛擬桌面與第二服務節(jié)點之間的網(wǎng)絡連接通道“集成虛擬桌面進程→客戶端代理進程→會話節(jié)點主控進程→第二服務節(jié)點代理進程”發(fā)送到第二服務節(jié)點;第二服務節(jié)點對該請求處理后向集成虛擬桌面返回反饋消息,更新后的剪貼板內(nèi)容粘貼在屬于第二服務節(jié)點的應用程序上。
全文摘要
本發(fā)明公開了一種在多節(jié)點智能網(wǎng)絡應用服務系統(tǒng)中實現(xiàn)剪貼板共享的方法,包括A.預先將剪貼板數(shù)據(jù)內(nèi)容設置成統(tǒng)一的字符串格式,并設置統(tǒng)一的通信機制在多個服務節(jié)點之間傳遞剪貼板數(shù)據(jù)內(nèi)容;B.在集成虛擬桌面上對第一服務節(jié)點的應用程序進行復制/剪切操作,將該復制/剪切操作信息傳遞給第一服務節(jié)點;C.第一服務節(jié)點接收到復制/剪切操作信息,將剪貼板內(nèi)容轉換成統(tǒng)一的字符串格式,采用統(tǒng)一的通信機制將剪貼板內(nèi)容通過集成虛擬桌面發(fā)送給第二服務節(jié)點,第二服務節(jié)點將本地剪貼板內(nèi)容更新為接收的剪貼板內(nèi)容;D.在集成虛擬桌面上對第二服務節(jié)點的應用程序進行粘貼操作,第二服務節(jié)點將更新后的剪貼板內(nèi)容粘貼到自身的應用程序上。
文檔編號G06F9/46GK101022398SQ200710064608
公開日2007年8月22日 申請日期2007年3月21日 優(yōu)先權日2007年3月21日
發(fā)明者葉劍, 李錦濤, 史紅周, 朱珍民, 劉偉, 蘇曉麗 申請人:中國科學院計算技術研究所