?? xwebserver.java
字號(hào):
import java.io.*;
import java.net.*;
import net.jxta.pipe.*;
import net.jxta.impl.endpoint.*;
public class XWebServer
implements PipeMsgListener
{
P2PSocket pps = new P2PSocket();
BaseMessage bm = new BaseMessage();
String default_url = "http://127.0.0.1:8080/demo/";
public XWebServer()
{
pps.setInputPipeName("001s");
pps.setInListener(this);
pps.bind();
}
public void pipeMsgEvent(PipeMsgEvent event)
{
String temp = null;
MessageImpl mi = (MessageImpl)event.getMessage();
temp = mi.getString(bm.WEB_MESSAGE_TYPE);
if(temp.equals(bm.WEB_MESSAGE_REQEST))
{
doWEBRequest(mi);
return;
}
if(temp.equals(bm.WEB_MESSAGE_REQEST_FIRST))
{
doWEBRequestFirst(mi);
return;
}
}
public void doWebRequest(MessageImpl mi)
{
System.out.println("捕獲一個(gè)網(wǎng)站內(nèi)容請(qǐng)求!");
String url = mi.getString(bm.WEB_URL);
pps.send(bm.newWEBMessage(url2Stream(url),pps.getOutputPipeName(),pps.getInputPipeName(),bm.WEB_CONTENT,"Temp");
}
public void doWebRequestFirst(MessageImpl mi)
{
System.out.println("捕獲一個(gè)首次連接請(qǐng)求!");
MessageElementImpl mei = (MessageElementImpl)mi.getElement(bm.WEB_REQUEST_FIRST);
String file_name = mi.getString(bm.WEB_URL);
saveADV(mei.getStream(),file_name);
pps.setOutputPipeName(file_name);
pps.setOutListener(pps);
pps.connect(file_name);
pps.send(bm.newWEBMessage(url2Stream(url),pps.getOutputPipeName(),pps.getInputPipeName(),bm.WEB_CONTENT,"Temp");
}
public void saveAdv(InputStream is,String fname)
{
int length;
byte buf[] = new byte[1024];
try
{
FileOutputStream fos = new FileOutputStream("adv/"+fname);
BufferedOutputStream bos = new BufferedOutputStream(fos);
BufferedInputStream bis = new BufferedInputStream(is);
while((length=bis.read(buf,0,1024))!=-1)
{
bos.write(buf,0,length);
bos.flush();
}
bis.close();
bos.close();
fos.close();
}catch(IOException ioe)
{
System.out.println("寫入文件錯(cuò)誤:"+ioe);
}
}
public InputStream url2Stream(String url)
{
try
{
String a = default_url;
if(url!=null)a = a + url;
System.out.println(a);
URL link = new URL(a)
return link.openStream();
}catch(IOException ioe)
{
System.out.println("出錯(cuò)!");
System.exit(-1);
}
return null;
}
public static void main(String args[])
{
XWebServer xf = new XWebServer();
}
};
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -