applet用http隧道技术和servlet通讯 (源码) 作者:jdeveloper
applet source
import java.io.*; import java.applet.applet; import java.awt.*;
public class testdatastreamapplet extends applet { string response; public void init(){ try{ java.net.url url = new java.net.url(getdocumentbase(),"servlet/datastreamecho"); java.net.urlconnection con = url.openconnection(); con.setusecaches(true); con.setdooutput(true); con.setdoinput(true); bytearrayoutputstream byteout = new bytearrayoutputstream(); dataoutputstream out = new dataoutputstream(byteout); out.writeutf("hello world!"); out.flush(); byte buf[] = byteout.tobytearray(); con.setrequestproperty("content-type","application/octest-stream"); con.setrequestproperty("content-length",""+buf.length); dataoutputstream dataout = new dataoutputstream(con.getoutputstream()); dataout.write(buf); dataout.flush(); dataout.close();
datainputstream in = new datainputstream(con.getinputstream()); response = in.readutf(); system.out.println("read from server :" + response); in.close(); } catch(exception e){ e.printstacktrace(); } }
public void paint(graphics g){ g.drawstring("read from server :" + response,10,20); } }
|
servlet source
import javax.servlet.*; import javax.servlet.http.*; import java.io.*;
public class datastreamecho extends httpservlet{ public void service(httpservletrequest req,httpservletresponse resp) throws servletexception ,java.io.ioexception { datainputstream in = new datainputstream(req.getinputstream()); resp.setcontenttype("application/octest-stream"); bytearrayoutputstream byteout = new bytearrayoutputstream(); dataoutputstream out = new dataoutputstream(byteout); string response = in.readutf(); out.writeutf(response); out.flush(); byte buf[]= byteout.tobytearray(); resp.setcontentlength(buf.length); servletoutputstream servletout = resp.getoutputstream(); servletout.write(buf); servletout.close(); }
}
|