📄 jxtaserversocketlinuxwifi.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 + -