JavaSE_网络编程_TCP_练习4_与浏览器和服务端交互

来源:互联网 发布:matlab编程例题 编辑:程序博客网 时间:2024/05/21 16:58

IE作为客户端,

ServerSocket作为服务端,

输出浏览器的请求消息

package source_code;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class IE_ServerSocket {  public static void main(String[] args) throws IOException {    /*方法说明:     *自定义服务端,使用IE作为客户端,     *看看IE(客户端)到底给我(服务端)发了什么请求!     */    ServerSocket ss = new ServerSocket(9090);//侦听9090端口    Socket s = ss.accept();    System.out.println(s.getInetAddress().getHostAddress()+".....connected");    //把IE发送给服务端的数据全打印出来    //看看浏览器中输入网址后,回车    //http://127.0.0.1:9090/myweb/iframe.html    //到底给服务端发的是啥?    InputStream in = s.getInputStream();    byte[] buf = new byte[1024];    int len = in.read(buf);    String text = new String(buf,0,len);    System.out.println(text);    //给客户端一个反馈信息(读取资源也同样可以)。    PrintWriter out = new PrintWriter(s.getOutputStream(),true);    out.println("<font color='red' size='7'>欢迎光临本站</font>");    //显示在IE的document里面    s.close();    ss.close();  }}================================第1行是:请求行  请求方式  /myweb/iframe.html  请求的资源路径   http协议版本。第2段是:请求消息头 . 属性名:属性值第3段是:空行第4段是:请求体GET /myweb/iframe.html HTTP/1.1Accept: application/x-shockwave-flash,     image/gif, image/jpeg, image/pjpeg, image    /pjpeg, application/vnd.ms-excel,     application/vnd.ms-powerpoint, application/msw    ord, application/xaml+xml,     application/x-ms-xbap, application/x-ms-application, */*Accept-Language: zh-cnUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0;     YYGameAll_1.2.167057.92; Windows     NT 5.1; Trident/4.0; IEShow Toolbar;     IEShow herowyToolBar; .NET CLR 2.0.50727; .    NET4.0C)Accept-Encoding: gzip, deflateHost: 127.0.0.1:9090Connection: Keep-Alive



Socket客户端模拟浏览器,

伪造请求消息发送给Tomcat服务端,

输出应答消息

import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.net.Socket;/*运行这个前,要先运行tomcat服务器用Socket客户端模拟浏览器:通过伪造请求行+请求消息头+空行+请求体对Tomcat服务器发起请求!并且输出Tomcat服务器返回的应答消息*/public class FakeIE_Tomcat {    public static void main(String[] args) throws Exception {        Socket s=new Socket("127.0.0.1",8080);        PrintWriter out=new PrintWriter(s.getOutputStream(), true);        out.println("GET /myweb/iframe.html HTTP/1.1");        out.println("Accept: */*");        out.println("Accept Encoding: gzip,deflate");        out.println("Host: 127.0.0.1:8080");// 一个IP上可能有多个服务器        out.println("Connection: close");        out.println("");//换行,即请求消息头和消息体的分割        out.println("");//消息体        //读取tomcat服务器返回的信息(应答消息)        InputStream in=s.getInputStream();        byte[] buf=new byte[1024];        int len=in.read(buf);        System.out.println(new String(buf,0,len));        s.close();    }}//下面就是tomcat服务器响应请求后,返回的信息!(应答消息)/*HTTP/1.1 200 OKServer: Apache-Coyote/1.1Accept-Ranges: bytesETag: W/"538-1384427776000"Last-Modified: Thu, 14 Nov 2013 11:16:16 GMTContent-Type: text/htmlContent-Length: 538Date: Thu, 14 Nov 2013 11:17:59 GMTConnection: close<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>    这里面是title</title></head><body><font color="#000099" size="+3">演示iframe标签(画中画,页面中挖个洞)</font><iframe src="1.html" height="300",width="500">    如果看到这些文字,说明您的浏览器不支持iframe标签</iframe><iframe src="www.baidu.com/xxx.js" height="0",width="0">    如果iframe的高宽都被设置为0,    并且访问地址是一个js脚本,就可能实现一个恶意代码!</iframe></body></html>*/



原创粉丝点击