999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Jxta的P2P即時通信軟件的Java實現

2010-04-12 00:00:00
現代電子技術 2010年14期

摘 要:本軟件的目的是要求解決傳統的基于C/S模式的即時通信軟件過分依賴于中心節點的性能的問題,基于P2P模式的即時通信軟件可以有效地解決這些問題。本軟件采用Java的基于P2P的Jxta網絡框架,軟件用IMbean鏈接GUI圖形界面的開發方式,并實現了多個Peer節點之間的信息收發。

關鍵詞:即時通信軟件; P2P模式; Jxta; Java

中圖分類號:TN87+; TP311 文獻標識碼:A 文章編號:1004-373X(2010)14-0136-04

Java Realization of P2P Instant Messaging Software Based on Jxta

QING Lin

(Hunan Normal University, Changsha 410006,China)

Abstract: The purpose of this software is to figure out the problem that the common instant message software mostly depended on the ability of the centre pole. The software is based on the frame of JXTA of the JAVA, and uses the development method of linking GUI with IMbean, achieves the posting of messages between every Peer.

Keywords: instant messaging software; P2P; Jxta; Java

P2P技術是目前非常流行的一種分布式計算技術,P2P網絡的基礎單位是對等點,每個對等點之間能夠互訪。SUN公司針對P2P技術的特點提出了自己關于P2P網絡的Jxta研究項目,本文設計的即時通信軟件便是基于該技術來開發的。

1 軟件實現

1.1 系統架構

Jxta P2P applications即本文所設計的軟件是建立在JavaBean上的,JavaBean是一種類,它針對特定的用途封裝了屬性和方法[1],實現特定的用途,而下面的JAL是Java的抽象層,它直接隔開了Jxta的平臺,為上層的程序管理Jxta的對等體,廣告,管道以及其他各種底層的實現和細節[2]。

1.2 總體設計步驟和方法

總體設計步驟和方法[3]如下:

(1) 設計JAL;

(2) 設計本軟件的中的JavaBean,即IMbean;

(3) 創建應用程序VSJChat的GUI圖形界面;

(4) 鏈接IMbean和應用程序GUI,以實現功能[4]。

1.3 設計JAL的Peer接口

JAL實際上也是API即引用程序接口,實現以下功能:

(1) 發現Peer同時能被發現;

(2) 搜索其他Peer和Peer群;

(3) 創建和管理Peer群;

(4) 和其他Peer的交流;

(5) 獲得其他Peer或者Peer群的信息[5]。

Peer接口設計程序如下所示:

public interface Peer{ //開始

public void boot(String name)

throws Exception;

public void boot(String name,

String group)throws Exceptio

//申明可用性

public void publish()

throws Exception; //Peer信息

public String getName();

public String[]getPeers()

throws Exception; //發送和接收信息

public boolean sendMessage(

String name,Message msg)

throws Exception;

public boolean broadcast

(Messagemsg)throws Exception

public Message receiveMessage()

throws Exception; //信息處理

public Message newMessage();

public void pushObject(Message m

String tag,Object obj)

throws Exception;

public Object popObject(

Message msg,String tag)

throws Exception; //群處理

public void createGroup(

String name)throws Exceptio

public void joinGroup(String name

throws Exception;

public String[]getGroups()

throws Exception;

public void createAndOrJoinGroup

String name)throws Exceptio

public void leaveGroup(String nam

throws Exception;

//信息效用

public boolean

searchGroupWithName(String name)

throws Exceptio

public boolean

searchPeerWithName(String n

throws Exception;

public void displayPeers()

throws Exception;

public void displayGroups()

throws Exception;

public void displayServices()

throws Exception;

public String getPeerStatistics();

}

1.4 IMbean的設計

IMBean是在JAL基礎上開發的一個應用JavaBean。它的作用是:處理所有的Jxta細節問題(包括初始化Peer,異常處理)[6];處理輸入信息,傳輸到VSJChat;處理輸出信息,通過Jxta網絡發送。

1.5 應用程序VSJChat的GUI圖形界面的創建

利用圖形編輯器創建GUI圖形界面。使用的開發工具是NetBeans,利用其中的圖形編輯器創建。層結構和每個GUI組件的類型,各個按鈕的名字將顯示在圖像界面中。

GUI產生代碼程序如下所示:

Public class VSJChat extends Javax.swing.JFrame{

/**產生新模板VSJchat*/

public VSJChat(){

...

}

private void initComponents(){

chatBean1=new

org.Jxta.ezel.beans.imbean.IMBean();

jPanel1=new Javax.swing.JPanel();

jTextField1=new Javax.swing.JTextField();

jButton1=new Javax.swing.JButton();

jPanel2=new Javax.swing.JPanel();

jTextArea1=new Javax.swing.JTextArea();

setTitle(\"VSJ P2P World Wide Messaging-100%Java Edition\");

addWindowListener(new

Java.awt.event.WindowAdapter(){

public void windowClosing

(Java.awt.event.WindowEvent evt){

exitForm(evt);

}

});

jPanel1.setLayout(new Java.awt.BorderLayo

jTextField1.setColumns(40);

jTextField1.setFont(new Java.awt.Font(

\"Dialog\",0,10));

jPanel1.add(jTextField1,

Java.awt.BorderLayout.CENTER);

jButton1.setText(\"Send Message\");

jPanel1.add(jButton1,Java.awt.BorderLayou

getContentPane().add(jPanel1,

Java.awt.BorderLayout.SOUTH);

jPanel2.setLayout(new Java.awt.BorderLayo

jTextArea1.setEditable(1);

jTextArea1.setFont(new

Java.awt.Font(\"Dialog\",2,12));

jTextArea1.setFocusable(1);

jTextArea1.setMinimumSize(new

Java.awt.Dimension(500,400));

1.6 建立IMBean和應用程序VSJChat的鏈接

1.6.1 導入IMBean

在IDE開發工具中加入代碼來導入IMBean,修改VSJChat產生構造器來完成的。在源程序中創建了一個特別的構造器,它用2個字符串作為參數,并為一個私有方法localInit()構造出初始化代碼。用一個發送者或對等機名字和一個群名調用initBean()方法將激活在特定的群中的關聯對等機名的Jxta平臺。使用IMBean可加入到存在的被提供用戶名的IM會話中。在localInit()方法中,可以設置其他可獲得的IMBean參數,如alias和topic properties[7]。

程序:導入bean

public VSJChat(){

mySenderName=\"noname\";

myGroupName=\"netpeergroup\";

localInit();

}

public VSJChat(String peername,String groupname){

mySenderName=peername;

myGroupName=groupname;localInit();

}

private void localInit(){

initComponents();

try{

chatBean1.initBean(mySenderName,myGroupName);

}catch(Exception ex){

ex.printStackTrace();

}

chatBean1.setSenderName(mySenderName);

chatBean1.setAlias(\"NOALIAS\");

chatBean1.setTopic(\"ALL\");

jTextField1.requestFocus();

1.6.2 實現IMBean發信息的功能

在GUI圖形界面中把jBotton1的按紐命名為“Send Message”。運用NetBeans3.5的GUI編輯器,選中jBotton1組件,選擇事件標簽的屬性列,點擊為事件名“actionPerformed”的屬性名,再輸入事件處理器的名字“SendClick”。這將在VSJChat中自動創建一個事件處理器方法。

產生事件監聽者程序[8] 如下所示:

jButton1.addActionListener(new Java.awt.event.ActionListener(){

public void actionPerformed(Java.awt.event.ActionEvent evt)

SendClicked(evt);

}

);

SendClicked()方法也同時產生了。填充這個方法,通過IMbean來取得用戶輸入和發送的消息。

獲得用戶輸入和發送的信息程序如下所示:

private static final String CHAT_SEP=\">\";

private static final String CR=\"\\\\";

private static final String EMPTY_TEXT=\"\";

private StringBuffer curMsgs=new

StringBuffer(EMPTY_TEXT);

private void SendClicked(

Java.awt.event.ActionEvent evt){

try{String latestMsg=jTextField1.getText();

chatBean1.sendMessage(latestMsg);

curMsgs.append(mySenderName+

CHAT_SEP+latestMsg+CR);

jTextArea1.setText(curMsgs.toString());

jTextField1.setText(EMPTY_TEXT);

jTextField1.requestFocus();

}catch(Exception ex){

ex.printStackTrace();

} }

在使用者打完字時按下回車鍵來發送信息。這可以在處理jTextFieldv1組件的actionPerformed()事件中完成。再一次使用GUI編輯器,這次選擇jTextField1組件,調用TextFieldComplete()處理方法[9]。

程序:發送信息快捷方式

jTextField1.addActionListener(new

ava.awt.event.ActionListener(){

public void actionPerformed(

Java.awt.event.ActionEvent

evt){

TextFieldComplete(evt);

} });

然后可以填充TextFieldComplete()方法來簡單調用SendClick(),因為回車等同于點擊“Send Message”按紐。

發送信息程序如下所示:

private void TextFieldComplete(

Java.awt.event.ActionEvent evt){

SendClicked(evt);

})

1.6.3 實現IMBean接收信息功能

IMBean有2種接收信息的模式,事件處理和輪流檢測。因應用程序不同,2種方法可以任選其一。本文用的是事件處理方式。可以在組件層級顯示中通過點擊IMBean組件,在屬性列表中選擇“event”標簽,運用IDE來加入1個對IMBean的MessageReceive事件的監聽程序。這個事件處理器可稱為“messageHandler”。

IDE也為messageHandler()方法產生一個架構代碼。這里,給找到接收的信息和刷新顯示在jTextArea中的信息填充邏輯語言[10]。

刷新顯示在jTextArea中的信息程序如下所示:

private void messageHandler(MessageReceivedEvent evt){

curMsgs.append(evt.getSender()+

CHAT_SEP+evt.getMessageText()

+CR);

jTextArea1.setText(

curMsgs.toString());

}

完成以上工作以后,VSJChat應用程序的編寫就完成了。

1.7 實驗結果

當第一次運行VSJChat,Jxta GUI配置器會彈出,并要求設置配置參數,在初始化配置后,這些配置將存儲在一個.Jxta目錄中,以后重啟時將只為使用安全用戶名和密碼者提醒。按局域網上配置測試參數。首先,創建集合點,這個可以用網上發布的目錄code/test/rdvnode中的runit.bat文件開始。仔細研究runit.bat文件,看到它實際上開始的是uk.co.vsj.Jxta2.wwm.RunRDV類,即:這個類的代碼創建一個Jxta群,把它作為一個群的集合點。現在開始第一個對等點,即peer1,在code/test/peer1目錄下運行runit,bat文件。繼續配置peer2,和peer1同樣設置。這個對等點可以通過code/test/peer2目錄下的runit.bat文件開始。運行這2個Peer,運用以上的命令,就可以用peer1和peer2運行VSJChat了。雖然只運行了2個peer,但按照上面的配置方法,只改變Peer的IP配置,在同一個VSJChat上運行多少個Peer都是可以的。

2 結 語

本文著重介紹了如何實現了基于P2P網絡技術的即時通信軟件的對等體雙方互相收發信息。當然P2P網絡時代的應用還很多,今后本軟件將向著包含網絡存儲,分布式下載等更多的應用功能的方向發展。

參考文獻

[1]吳先濤,吳承治.P2P技術及其演進[J].現代傳輸,2008 (3):64-65.

[2]楊天路,劉宇宏,張文,等.P2P網絡技術原理與系統開發案例[M].北京:人民郵電出版社,2007.

[3]Scott Oaks,Bernard Traversat. Jxta技術手冊[M].北京:清華大學出版社,2004.

[4]宋雪昌.基于Jxta對等網絡的即時通信系統的研究與實現[D].蘇州:蘇州大學,2005.

[5]周功業,黎書生.新一代網絡計算模型:P2P及其Jxta體系結構的設計與實現[J].計算機應用研究,2002(9):139-140.

[6]鄧杰文.P2P系統模型綜述[J].中國科技信息,2008(6): 116-117.

[7]吳國慶.對等網絡技術研究[J].計算機技術與發展,2008(7):100-101.

[8]許斌.Jxta-Java P2P網絡編程技術[M].北京:清華大學出版社,2003.

[9]Sun Microsystems Inc.. Project Jxta: an open innovative collaboration[ M] . [ S.l.] : SunMicrosystems Inc., 2001.

[10]李俊青.應用Jxta實現P2P的方案研究[J].河北理工學院學報,2003(4) :6-9.

主站蜘蛛池模板: 国产无码在线调教| 国产成人精品日本亚洲| 成人亚洲国产| 成人免费网站久久久| 亚洲欧美成aⅴ人在线观看| 免费在线看黄网址| 午夜丁香婷婷| 久久亚洲中文字幕精品一区| 国产女人水多毛片18| 亚洲欧美日韩视频一区| 日韩在线成年视频人网站观看| 亚洲欧美另类视频| 在线国产欧美| 亚洲无码视频喷水| 国产va在线| 另类欧美日韩| 91九色国产porny| 3344在线观看无码| 国产成人精品免费av| 特级毛片8级毛片免费观看| 国产视频入口| 亚洲日韩高清在线亚洲专区| 色综合久久88色综合天天提莫 | 红杏AV在线无码| 欧美亚洲国产精品久久蜜芽| аⅴ资源中文在线天堂| 免费看的一级毛片| 国产午夜福利亚洲第一| 国产精品视频a| www.91在线播放| 1级黄色毛片| 麻豆精品久久久久久久99蜜桃| 亚洲—日韩aV在线| 亚洲男人的天堂网| 成人福利免费在线观看| 91丨九色丨首页在线播放 | 狠狠久久综合伊人不卡| 国产微拍精品| 人妻丰满熟妇αv无码| 亚洲精品中文字幕无乱码| 欧美成a人片在线观看| a级毛片免费网站| 69综合网| 午夜啪啪网| 国产成人午夜福利免费无码r| 亚洲欧美综合在线观看| 国产精品成人久久| 国产成人精品综合| 日韩精品一区二区三区视频免费看| 丝袜无码一区二区三区| 亚洲侵犯无码网址在线观看| 久久久久久久久18禁秘| 亚洲精品视频网| 国产精品999在线| 少妇被粗大的猛烈进出免费视频| 久久综合色播五月男人的天堂| 国产视频大全| 亚洲精品成人片在线播放| 国产乱人激情H在线观看| 麻豆精品视频在线原创| 久久性妇女精品免费| 欧美福利在线观看| 国产综合精品日本亚洲777| 97成人在线视频| 青青国产成人免费精品视频| 国产日韩精品欧美一区灰| 亚洲第一网站男人都懂| www.精品国产| 亚洲国产成人精品一二区| 精品黑人一区二区三区| 亚洲欧美日韩成人高清在线一区| 超薄丝袜足j国产在线视频| 91国内外精品自在线播放| 亚洲美女高潮久久久久久久| 精品一区二区三区波多野结衣 | 国产91丝袜| 国产www网站| 亚洲欧美日韩视频一区| 亚洲成人网在线观看| 亚洲视频a| 一级片免费网站| 四虎国产精品永久一区|