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

📄 jxtaserversocketlinuxwifi.java

📁 We intend to develop a wifi enabled p2p file sharing system on a linux platform using jxta and java.
💻 JAVA
字号:
package edu.uiuc.cs.cs327.linuxwifi.services;

import java.io.*;
import net.jxta.peergroup.PeerGroup;
import net.jxta.peergroup.PeerGroupFactory;
import net.jxta.exception.PeerGroupException;
import net.jxta.document.AdvertisementFactory;
import net.jxta.document.MimeMediaType;
import net.jxta.socket.JxtaSocket;
import net.jxta.socket.JxtaServerSocket;
import net.jxta.protocol.PipeAdvertisement;
import edu.uiuc.cs.cs327.linuxwifi.services.WifiMessage;
import edu.uiuc.cs.cs327.linuxwifi.app.*;


/**
 * this application creates an instance of an input pipe,
 * and waits for msgs on the input pipe
 *
 */

public class JxtaServerSocketLinuxwifi  extends Thread{

    private PeerGroup netPeerGroup = null;
    private PipeAdvertisement pipeAdv;
    private JxtaServerSocket serverSocket;
    private MusicProfile searchProfile;
    private WifiMessage wifiMessage = null;
    private AppAPI _appApi;
    
    public JxtaServerSocketLinuxwifi( AppAPI app )
    {
        _appApi=app;
    }


    public void receiveMessage (JxtaSocket socket) {
        try{
                        
            System.out.println("received message");
                            
            ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
            wifiMessage = (WifiMessage)in.readObject(); 
            
            System.out.println("Finished reading the stream");
        }
        catch (Exception e) {
            System.out.println("failed to read in wifi message");
            e.printStackTrace();
        }
        //Search Request
        if(wifiMessage.getmessageType() == WifiMessage.SearchRequest)
        {
            System.out.println("SEARCH RCVD");                
            SearchRequest sr = (SearchRequest) wifiMessage;   
            searchProfile = sr.getMusicProfile();
            
            System.out.println("))))))))))))got a search request for the following artist: " + searchProfile.getArtist() );
            
            _appApi.fireMusicRequestEvent(sr.getMusicProfile());
            
            System.out.println("Finished firing event");

            try {
            // get the socket output stream
            ObjectOutputStream out = new ObjectOutputStream (socket.getOutputStream());

           
            
            FileInfo fileInfo = _appApi.popFileInfo();

            while(fileInfo != null)
            {
                System.out.println("File info on stack: " + fileInfo.getFileName());

                SearchResponse srr = new SearchResponse(fileInfo);
                
                // send the searchProfile MusicProfile Object over the socket
                out.writeObject(srr);
                out.flush();
                
                fileInfo = _appApi.popFileInfo();
            }


            out.close();
            }catch (Exception e)
            {
                System.out.println("Exception: " + e);
            }
            
            // Pass it to the search handler

        }
        else if(wifiMessage.getmessageType() == WifiMessage.FileTransferRequest)
        {
            FileTransferRequest ftr = (FileTransferRequest) wifiMessage;
            System.out.println("Reading from FS: " + ftr.getFileInfo().getFilePath());

            FileTransferResponse ftrsp=null;
            try {
               ftrsp = new FileTransferResponse(
               ftr.getFileInfo().getFilePath() ,
               //"good file.mp3",
               ftr.getFileInfo().readFile());
            }catch (Exception e) {
                System.out.println("Exception in reading file" + e);
                ftrsp = new FileTransferResponse("NO FILE READ", null);
            }



//SearchResponse ftrsp = new SearchResponse(ftr.getFileInfo());
			System.out.println("Done reading file, sending it to requester: " + ftrsp.getFileName());

            try {
                // get the socket output stream
                ObjectOutputStream out = new ObjectOutputStream (socket.getOutputStream());
                out.writeObject(ftrsp);
                out.flush();
                out.close();
            }catch (Exception e)
            {
                System.out.println("Exception: " + e);
            }
            
            System.out.println("ServerSocket: Done writing file");
            
        }

        else
        {
            System.out.println("Something unknown recvd");
        }

    }

    /**
     * wait for msgs
     *
     */

    public void run() {
        System.out.println("starting ServerSocket");
        while (true) {
            try {
                    JxtaSocket socket = serverSocket.accept();
                    if (socket != null ) {
                        System.out.println("socket created");
                        receiveMessage(socket);
                        socket.close();
                    }
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
        }
    }


    /*GET & SET methods for (JxtaServerSocket) serverSocket attribute*/
    public JxtaServerSocket getserverSocket(){
        return serverSocket;
    }

    public void setserverSocket(JxtaServerSocket s){
        serverSocket = s;
    }

    /*GET & SET methods for (PipeAdvertisement) pipeadv attribrute*/
    public PipeAdvertisement getpipeAdv(){
        return pipeAdv;
    }

    public void setpipeAdv(PipeAdvertisement p){
        pipeAdv = p;
    }

        /*GET & SET methods for (PipeAdvertisement) pipeadv attribrute*/
    public PeerGroup getnetPeerGroup(){
        return netPeerGroup;
    }

    public void setnetPeerGroup(PeerGroup g){
        netPeerGroup = g;
    }
}

⌨️ 快捷键说明

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