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

📄 presenceprotocol.java

📁 基于jxta的局域网P2P文件共享,可以实现局域网中的文件p2p共享,实现文件快速传输及交流
💻 JAVA
字号:
package connex.core.Presence;

import java.io.*;

import net.jxta.document.*;
import net.jxta.endpoint.*;

public class PresenceProtocol {


    protected static String version = "1.0";

    /* status */
    protected static String ONLINE = "online";
    protected static String OFFLINE = "offline";
    protected static String BUSY = "busy";

    /* Message types*/
    protected static String presenceRequest = "presenceReq";
    protected static String presenceResponse = "presencefResp";
    protected static String presenceUpdate = "presenceUpdate";
    protected static String ping = "ping";
    protected static String statusUpdate = "statusUpdate";
    protected static String serviceRequest = "serviceReq";
    protected static String serviceResponse = "serviceResp";
    protected static String pictureRequest = "picReq";
    protected static String pictureUpdate = "picUpdate";
    protected static String pictureResponse = "picResp";

    /*
     * PresenceService also defines it own protocol. Requests arrive as a JXTA
     * Message with the following elements:
     */
    //Protocol header
    protected static String nameSpace = "ConneXPresence";
    protected static String versionTag = "version";
    protected static final String membIDTag = "MemberID";
    protected static final String backDoorTag = "backDoorID";
    protected static final String typeTag = "type";

    //protocol data
    public static final String statusTag = "status";
    public static final String profileTag = "ProfileAdv";
    public static final String peerTag = "peerAdv";
    public static final String serviceTag = "serviceID";
    public static final String servicePipeTag = "PipeID";
    public static final String pictureTag = "picture";

    /**
     * creates a ProfileMessage
     * @param type String
     * @return Message
     */
    protected static Message createPresenceMessage(String type) {
        Message msg = createMessage(type);
        /* status */
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                statusTag,
                PresenceProtocol.ONLINE, null));

        /*profilAdv*/
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new TextDocumentMessageElement(
                                      PresenceProtocol.
                                      profileTag,
                                      (XMLDocument) PresenceService.
                                      getInstance().
                                      getmOwnPprofileAdv().
                                      getDocument(MimeMediaType.XMLUTF8), null));
        /* peerAdv*/
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new TextDocumentMessageElement(
                                      PresenceProtocol.
                                      peerTag,
                                      (XMLDocument) PresenceService.
                                      getInstance().
                                      getmOwnPeerAdv().
                                      getDocument(MimeMediaType.XMLUTF8), null));

        return msg;

    }

    /**
     * creates PictureResponseMessage
     * @return Message
     */
    protected static Message createPictureResponseMessage() {
        Message msg = PresenceProtocol.createMessage(PresenceProtocol.pictureResponse);

        int buffSize = 24 * 1024;
        int length = 0;
        byte[] buff = new byte[buffSize];
        try {
            FileInputStream in = new FileInputStream(System.getProperty(
                    "JXTA_HOME") + File.separator +
                    "MyImg.jpg");
            length = in.read(buff);
            in.close();
        } catch (Exception ex) {
            System.err.println(ex.getMessage());

            //xxx file not found? send a noPic message.
            return null;
        }

        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new ByteArrayMessageElement(PresenceProtocol.
                pictureTag,
                MimeMediaType.AOS, buff, 0, length, null));
        return msg;
    }


    /**
     * creates a new Message with header
     * @return Message
     * @param type String
     * @return Message
     */
    protected static Message createMessage(String type) {
        Message msg = new Message();
        /* version */
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                versionTag,
                PresenceProtocol.version, null));
        /* MemberID*/
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                membIDTag,
                PresenceService.getInstance().getmOwnPeerAdv().getPeerID().
                toString(), null));
        /* backDoorID*/
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                backDoorTag,
                PresenceService.getInstance().getOwnBackDoorID(), null));

        /* type */
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.typeTag,
                type, null));

        return msg;
    }

    /**
     * creates PictureUpdateMessage
      * @return Message
      */
     protected static Message createPictureUpdateMessage() {
        Message msg = PresenceProtocol.createMessage(PresenceProtocol.pictureUpdate);
        /* status */
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                statusTag,
                PresenceProtocol.ONLINE, null));
        return msg;

    }



    /**
     * createStatusUpdateMessage
     *
     * @param status String
     * @return Message
     */
    protected static Message createStatusUpdateMessage(String status) {
        Message msg = PresenceProtocol.createMessage(PresenceProtocol.statusUpdate);
        /* status */
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                statusTag,
                status, null));

        return msg;
    }

    /**
     * createServiceReqMessage
     *
     * @param serviceID String
     * @return Message
     */
    protected static Message createServiceReqMessage(String serviceID) {
        Message msg = PresenceProtocol.createMessage(PresenceProtocol.serviceRequest);
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.serviceTag
                ,
                serviceID, null));

        return msg;
    }

    /**
     * createServiceResMessage
     * @param serviceID String
     * @param pipeID String
     * @return Message
     */
    protected static Message createServiceResMessage(String serviceID, String pipeID) {
        Message msg = PresenceProtocol.createMessage(PresenceProtocol.serviceResponse);
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.serviceTag
                ,
                serviceID, null));
        msg.addMessageElement(PresenceProtocol.nameSpace,
                              new
                              StringMessageElement(PresenceProtocol.
                servicePipeTag
                ,
                pipeID, null));

        return msg;
    }


}

⌨️ 快捷键说明

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