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

📄 pipedemo.java

📁 实现JXta在J2ME版本上的JXME连接relay的非常好的入门例子
💻 JAVA
字号:
//PipeDemo.java

import net.jxta.j2me.*;
import java.io.IOException;
import javax.microedition.midlet.MIDlet;


public class PipeDemo extends MIDlet
{
    private PeerNetwork peerNetwork;

    public PipeDemo ()
    {
        try {
            peerNetwork = PeerNetwork.createInstance ("JxmeTestPeer");
            // You may change Relay_URL (i.e. http://localhost:9700) to your own Relay IP.
            byte[] persistentState = peerNetwork.connect ("http://localhost:9700", null);

            String pipeId = createPipe("JxmeTestPipe");
            String listenOk = listenToPipe(pipeId);
            String searchedPipeId = searchPipe("JxmeTestPipe");
            Message msg = authorMessage("hello buddy!");
            String sendOk = sendMessage (msg, searchedPipeId);

        }
        catch(IOException ie){
            ie.printStackTrace();
        }
    }


    public String createPipe(String pipeName)
    {
        String pipeId = null;	
        try 
        {
            /***Step 1***/
            int messageID = peerNetwork.create (PeerNetwork.PIPE, pipeName, null, PeerNetwork.UNICAST_PIPE);
            System.out.println(">>> create pipe request ... ");

            /***Step 2***/
            Message  msg = peerNetwork.poll(5000);

            /***Step 3***/
            if (msg == null)
                return null;
            
            /***Step 4***/
            pipeId = processMessage(msg, messageID, "success");

            System.out.println(">>> create pipe request succeed, id : "+pipeId );

        } 
        catch (IOException ie) {
            ie.printStackTrace ();
        }

        return pipeId;
		
    }//createPipe()


    public String listenToPipe(String pipeId)
    {
        String listenOk = null;
        try 
        {
            /***Step 1***/
            int messageID = peerNetwork.listen (pipeId);

            /***Step 2***/
            Message msg = peerNetwork.poll(5000);

            /***Step 3***/
            if (msg == null)
                return null;

            /***Step 4***/
            listenOk = processMessage(msg, messageID, "success");

            System.out.println (">>> listening succeed over pipe... ");
        } 
        catch (IOException ie) {
            ie.printStackTrace ();
        }

        return listenOk;
    }


    public String searchPipe(String pipeName)
    {
        String pipeId = null;	
        try
        {
            /***Step 1***/
            int messageID = peerNetwork.search (PeerNetwork.PIPE, "Name", "JxmeTestPipe", 1);

            /***Step 2***/
            Message  msg = peerNetwork.poll(5000);

            /***Step 3***/
            if (msg == null)
                return null;

            /***Step 4***/
            pipeId = processMessage(msg, messageID, "result");

            System.out.println(">>> search pipe id found : "+pipeId );

        }			
        catch (IOException ie) { 
            ie.printStackTrace();
        }

        return pipeId;
    }    


    public Message authorMessage (String messageString)
    {
            /***Step 1***/			
            Element[] elements = new Element [1];

            /***Step 2***/			
            elements [0] = new Element("message", messageString.getBytes(), null, null);
            
            /***Step 3***/			
            Message message = new Message (elements);

            return message;
    }

    public String sendMessage(Message message, String pipeId)
    {
        String sentOk = null;
        try
        {
            /***Step 1***/
            int messageID = peerNetwork.send (pipeId, message);

            /***Step 2***/
            Message  msg = peerNetwork.poll(10000);

            /***Step 3***/
            if (msg == null)
                return null;

            /***Step 4***/
            sentOk = processMessage(msg, messageID, "success");

            System.out.println(">>> jxme message sent... "  );
        }
        catch (IOException ie){
            ie.printStackTrace();
        }           

        return sentOk;
    }


    private String processMessage (Message msg, int reqId, String successCriterion)
    {
        int requestIdentifierInResponse = 0;
        String searchedResourceIdentifier = null;
        String responseString = null;

        try
        {
            /***Step 1***/
            for (int j=0; j < msg.getElementCount(); j++) {
                /***Step 2***/
                Element e = msg.getElement(j);
                /***Step 3***/
                if ((e.getNameSpace()).equals("proxy")) {
                    if ((e.getName()).equals("requestId"))
                        requestIdentifierInResponse = Integer.parseInt(new String(e.getData()));
                    else if ((e.getName()).equals("response"))
                        responseString = new String (e.getData());
                    else if ((e.getName()).equals("id"))
                        searchedResourceIdentifier = new String (e.getData());
                }
            } //for (int j=0;) 

            /***Step 4***/
            if (requestIdentifierInResponse == reqId) {
                /***Step 5***/
                if (responseString.equals (successCriterion)) {
                    if (searchedResourceIdentifier != null)
                        /***Step 6***/
                        return searchedResourceIdentifier;	
                    else
                        /***Step 7***/
                        return responseString;
                }
            }//if (requestIdentifierInResponse == reqId)

        }
        catch(NumberFormatException ne){
            ne.printStackTrace();
        }

        return null;
    }

    public void startApp() {
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean unconditional) {
    }
}

⌨️ 快捷键说明

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