⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatinput.java

📁 jxta实现的p2p聊天
💻 JAVA
字号:
/*
 * Student Name: Seyed Saeed Ghiassy
 * Student ID  : 05994390
 * Supervisor  : Dr.Fakas
 * Project Name: Peer-to-Peer File Sharing Application Using JXTA technology
 * Unit Name   : Final Year Project
 * Unit Code   : 63CP3261
 * DeadLine    : 21-April-2008
 * University  : Manchester Metropolitan University
 * E-mail      : seyed.ghiassy@student.mmu.ac.uk
 * Softwares   : JXTA Version 2.4.1, JDK Version 1.6.0_05, NetBeans IDE 5.5
 */
package myPackage;

import java.awt.Color;
import java.io.FileInputStream;
import javax.swing.JTextArea;
//importing JXTA libraries
import net.jxta.document.AdvertisementFactory;
import net.jxta.document.MimeMediaType;
import net.jxta.endpoint.Message;
import net.jxta.endpoint.Message.ElementIterator;
import net.jxta.endpoint.MessageElement;
import net.jxta.peergroup.PeerGroup;
import net.jxta.pipe.InputPipe;
import net.jxta.pipe.PipeMsgEvent;
import net.jxta.pipe.PipeMsgListener;
import net.jxta.pipe.PipeService;
import net.jxta.protocol.PipeAdvertisement;

// this class will create input pipe for chatting services and shows the incoming messages
public class ChatInput extends Thread implements PipeMsgListener 
{   //Class variables
    private JTextArea txtChat=null , log=null;
    private PeerGroup SaEeDGroup=null;
    private String myPeerID = null;
    private PipeService myPipeService =null;
    private PipeAdvertisement pipeAdv =null;
    private InputPipe pipeInput = null;
    
    /** Creates a new instance of ChatInput */
    public ChatInput(PeerGroup group, JTextArea log, JTextArea chat) 
    {
        this.log = log;
        this.txtChat = chat;
        this.SaEeDGroup = group;
        getServices();
        
    }
    
    private void getServices()
    {   //Obtaining Peer Group services
        log.append("[+]Getting Services for Chat component...\n");
        myPipeService = SaEeDGroup.getPipeService();
        myPeerID = SaEeDGroup.getPeerID().toString();
        
        try{ //Creates input pipe
            FileInputStream is = new FileInputStream("saeedPipe.adv");
            pipeAdv = (PipeAdvertisement)AdvertisementFactory.newAdvertisement(MimeMediaType.XMLUTF8,is);
            is.close();
        }catch(Exception e){
            log.append("[+]Exception: " + e.getMessage()+"\n");
            e.printStackTrace();
            System.exit(-1);
        }
        log.append("[+]Input Pipe Successfully Created.\n");
        
    }
    public void startListening() //This method will start listening for incoming messages thro created pipe
    {
        log.append("[+]Start Listening for Incoming Messages.\n");
        try{
            pipeInput = myPipeService.createInputPipe(pipeAdv,this);
            
        }catch(Exception e){
            log.append("[-]Exception: " + e.getMessage()+"\n");
            return;
        }
        if(pipeInput == null){
            log.append("[-]Failure in Opening Input Pipe :-(\n");
            System.exit(-1);
        }
    }
    public void stopListening() //This method will stop input pipe
    {
        pipeInput.close();
        log.append("[-]Input Pipe Closed for Incomming Message.\n");
    }
    //this listener will respond to incoming messages and show them in Designated area
    public void pipeMsgEvent(PipeMsgEvent ev)
    {
        log.append("[+]Message Received...\n");
        Message myMessage = null;
        try{
            myMessage = ev.getMessage();
            if(myMessage == null){
                return;
            }
        }catch(Exception e){
            System.out.println("[-]Exception happend when trying to get Message element!");
            e.printStackTrace();
        }
        //Assigning values to wanted Tages
        ElementIterator el = myMessage.getMessageElements();
        MessageElement me = myMessage.getMessageElement("peerName");
        MessageElement me2 = myMessage.getMessageElement("peerID");
        MessageElement me3 = myMessage.getMessageElement("chatMessage");
        MessageElement me4 = myMessage.getMessageElement("Time");
        
        String peerName = me.toString();
        String peerID = me2.toString();
        String msgContent = me3.toString();
        String sentTime = me4.toString();
        if(me.toString() == null || me2.equals(myPeerID)){
            return;
        }
        else{
         txtChat.append("[ " + me+ "@" + me4 +"]  " + me3 + "\n");
         
        }  
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -