当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Java网络编程从入门到精通(30):定制accept办法[Java编程]

赞助商链接



  本文“Java网络编程从入门到精通(30):定制accept办法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

利用ServerSocket类的implAccept办法可以利用accept办法返回一个Socket子类对象.但implAccept是protected办法,因此,必须在ServerSocket类的子类中覆盖accept办法,然后在accept办法中利用implAccept办法重新设置Socket对象.implAccept办法的定义以下:

protected final void implAccept(Socket s) throws IOException

只要通过implAccept办法设置一个未衔接的Socket子类对象,accept办法就会返回一个已经衔接的Socket子类对象(accept返回的是Socket对象,要想得到Socket子类对象,必须举行范例转换).在大大都时刻不需求改变accept办法的行为,但有时需求一个有更多特点的Socket类.通过implAccept办法便可以到达这个目的.下面的代码定义了一个从Socket担当的HttpSocket类,这个类除了具有Socket类的一切特点外,还增添了一个办法getRequestHeaders,用于返回HTTP恳求的头信息.

package server;

   import java.net.*;
   import java.io.*;

   class HttpSocket extends Socket
   {
       public String getRequestHeaders() throws Exception
       {
           InputStreamReader isr = new InputStreamReader(getInputStream());
           BufferedReader br = new BufferedReader(isr);
           String s = "", result = "";
           while (!(s = br.readLine()).equals(""))
               result = result + s + "\r\n";
           return result;
       }
   }

   class HttpServerSocket extends ServerSocket
   {
       public HttpServerSocket(int port) throws IOException
       {
           super(port);
       }
       public Socket accept() throws IOException  // 覆盖accept办法
       {
           Socket s = new HttpSocket();
           implAccept(s);   // 将accept办法返回的对象范例设为HttpSocket
           return s;
       }
   }
   public class CustomAccept
   {
       public static void main(String[] args) throws Exception
       {
           HttpServerSocket httpServerSocket = new HttpServerSocket(1234);
           HttpSocket httpSocket = (HttpSocket) httpServerSocket.accept();
           System.out.println(httpSocket.getRequestHeaders()); // 向掌握台输出HTTP恳求头
           httpServerSocket.close();
       }
   }

测试

履行以下号令:

java server.CustomAccept

在IE的地址栏中输入以下Url:

http://localhost:1234

CustomAccept在掌握台中的运行后果:

GET / HTTP/1.1
Accept: */*
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)
Host: localhost:1234
Connection: Keep-Alive

上面的运行后果就是IE向服务端发出的HTTP恳求头的内容.这个运行后果会按照客户机配置的差别而有所差别.


  以上是“Java网络编程从入门到精通(30):定制accept办法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .