当前位置:  技术问答>java相关

高分,不够再加!!如何用java applet实现在客户端浏览器中显示即时的web server的系统时间

    来源: 互联网  发布时间:2015-02-06

    本文导语:  如何用java applet实现在客户端浏览器中显示即时的web server的系统时间 | lionhero:我改了一下 你可以用这个看看,但你还是要作修改,我要下班了。byebye package daytimeclient; import java.awt.*; impor...

如何用java applet实现在客户端浏览器中显示即时的web server的系统时间

|
lionhero:我改了一下
你可以用这个看看,但你还是要作修改,我要下班了。byebye

package daytimeclient;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.net.*;

/**
 * Title:        DaytimeClient
 * Description:
 * Copyright:    Copyright (c) 2001
 * Company:      Huateng
 * @author lu shengxiao
 * @version 1.0
 */

public class DayTimeClient extends Applet {
  private static final int TIME_PORT=13;
  private static final int TIMEOUT=10000;
  private DatagramSocket timeSocket=null;
  private static final int SMALL_ARRAY=1;
  private static final int TIME_ARRAY=100;
  InetAddress remoteMachine;
  private String timeString;
  private Label lblDayTime = new Label();

   /**Start the applet*/
  public void start() {
    try{
      timeSocket=new DatagramSocket();
    }catch(SocketException e){
      System.err.println("Unable to open socket:"+e);
    }
    try{
      remoteMachine=InetAddress.getByName("HOSTNAME");
    }catch(UnknownHostException uhe){
      System.out.println("Unknown host"+remoteMachine+":"+uhe);
    }
    getDayTime();
  }

  public String getDayTime(){
    DatagramPacket timeQuery;
    DatagramPacket response;
    byte[] emptyBuffer;
    try{
      emptyBuffer=new byte[SMALL_ARRAY];
      timeQuery=new DatagramPacket(emptyBuffer,emptyBuffer.length,remoteMachine,TIME_PORT);
      timeSocket.send(timeQuery);
    }catch(IOException e){
      System.out.println("Unable to send to"+remoteMachine+":"+e);
    }

    try {
      timeSocket.setSoTimeout(TIMEOUT);
    }catch (SocketException ex) {}
    try{
      emptyBuffer=new byte[TIME_ARRAY];
      response=new DatagramPacket(emptyBuffer,emptyBuffer.length);
      timeSocket.receive(response);
      timeString=new String(response.getData());
      lblDayTime.setText(timeString);
    }catch(InterruptedIOException iie){
      System.out.println("Timeout on receive:"+iie);
    }catch(IOException ioe){
      System.out.println("Failed I/O:"+ioe);
    }
    return timeString;
  }

  /**Stop the applet*/
  public void stop() {
    if (timeSocket!=null) timeSocket.close();
  }

  public DayTimeClient() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    lblDayTime.setText("label1");
    this.add(lblDayTime, null);
  }

}

|
开启Web server 的时钟服务

服务/协议 端口 说 明 
daytime 13 时钟服务,返回当前服务器时间的文本描述。 

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

public class DaytimeTCPClient                                 
{

    public static final String NETASCIIEOL = "rn";
    private static final SocketFactory DEFAULTSOCKETFACTORY = new DefaultSocketFactory();
    protected int timeout;                    //超时时间
    protected Socket socket;
    protected boolean isConnected;            //连接标志
    protected int defaultPort;                //默认端口号
    protected InputStream input;              //Socket的输入流
    protected OutputStream output;            //Socket的输出流
    protected SocketFactory socketFactory;    //SocketFactory是Socket抽象类

    public static final int DEFAULTPORT = 13;
    private char buffer[];

    public DaytimeTCPClient()
    {
        socket = null;
        input = null;
        output = null;
        timeout = 0;
        defaultPort = 0;
        isConnected = false;
        socketFactory = DEFAULTSOCKETFACTORY;

        buffer = new char[64];
        setDefaultPort(13);
    }

    public String getTime()
        throws IOException
    {
        StringBuffer stringbuffer = new StringBuffer(buffer.length);
        BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(input));
        do
        {
            int i = bufferedreader.read(buffer, 0, buffer.length);
            if(i > 0)
                stringbuffer.append(buffer, 0, i);
            else
                return stringbuffer.toString();
        } while(true);
    }


    protected void connectAction()
        throws IOException
    {
        socket.setSoTimeout(timeout);
        input = socket.getInputStream();
        output = socket.getOutputStream();
        isConnected = true;
    }

    public void connect(InetAddress inetaddress, int i)
        throws SocketException, IOException
    {
        socket = socketFactory.createSocket(inetaddress, i);
        connectAction();
    }

    public void connect(String s, int i)
        throws SocketException, IOException
    {
        socket = socketFactory.createSocket(s, i);
        connectAction();
    }

    public void connect(InetAddress inetaddress, int i, InetAddress inetaddress1, int j)
        throws SocketException, IOException
    {
        socket = socketFactory.createSocket(inetaddress, i, inetaddress1, j);
        connectAction();
    }

    public void connect(String s, int i, InetAddress inetaddress, int j)
        throws SocketException, IOException
    {
        socket = socketFactory.createSocket(s, i, inetaddress, j);
        connectAction();
    }

    public void connect(InetAddress inetaddress)
        throws SocketException, IOException
    {
        connect(inetaddress, defaultPort);
    }

    public void connect(String s)
        throws SocketException, IOException
    {
        connect(s, defaultPort);
    }

    public void disconnect()
        throws IOException
    {
        socket.close();
        input.close();
        output.close();
        socket = null;
        input = null;
        output = null;
        isConnected = false;
    }

    public boolean isConnected()
    {
        return isConnected;
    }

    public void setDefaultPort(int i)
    {
        defaultPort = i;
    }

    public int getDefaultPort()
    {
        return defaultPort;
    }

    public void setDefaultTimeout(int i)
    {
        timeout = i;
    }

    public int getDefaultTimeout()
    {
        return timeout;
    }

    public void setSoTimeout(int i)
        throws SocketException
    {
        socket.setSoTimeout(i);
    }

    public int getSoTimeout()
        throws SocketException
    {
        return socket.getSoTimeout();
    }

    public void setTcpNoDelay(boolean flag)
        throws SocketException
    {
        socket.setTcpNoDelay(flag);
    }

    public boolean getTcpNoDelay()
        throws SocketException
    {
        return socket.getTcpNoDelay();
    }

    public void setSoLinger(boolean flag, int i)
        throws SocketException
    {
        socket.setSoLinger(flag, i);
    }

    public int getSoLinger()
        throws SocketException
    {
        return socket.getSoLinger();
    }

    public int getLocalPort()
    {
        return socket.getLocalPort();
    }

    public InetAddress getLocalAddress()
    {
        return socket.getLocalAddress();
    }

    public int getRemotePort()
    {
        return socket.getPort();
    }

    public InetAddress getRemoteAddress()
    {
        return socket.getInetAddress();
    }

    public boolean verifyRemote(Socket socket)
    {
        InetAddress inetaddress = socket.getInetAddress();
        InetAddress inetaddress1 = getRemoteAddress();
        return inetaddress.equals(inetaddress1);
    }

    public void setSocketFactory(SocketFactory socketfactory)
    {
        if(socketfactory == null)
        {
            socketFactory = DEFAULTSOCKETFACTORY;
            return;
        } else
        {
            socketFactory = socketfactory;
            return;
        }
    }
}

|
import java.awt.Graphics;
import java.util.*;
import java.text.DateFormat;
import java.applet.Applet;

public class Clock extends Applet implements Runnable {
    private Thread clockThread = null;
    public void start() {
        if (clockThread == null) {
            clockThread = new Thread(this, "Clock");
            clockThread.start();
        }
    }
    public void run() {
        Thread myThread = Thread.currentThread();
        while (clockThread == myThread) {
            repaint();
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e){
            // the VM doesn't want us to sleep anymore,
            // so get back to work
            }
        }
    }
    public void paint(Graphics g) {
        // get the time and convert it to a date
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        // format it and display it
        DateFormat dateFormatter = DateFormat.getTimeInstance();
        g.drawString(dateFormatter.format(date), 5, 10);
    }
    // overrides Applet's stop method, not Thread's
    public void stop() {
        clockThread = null;
    }
}
java tutorial上抄的

|
Daytime协议
有一个有用的调试工具就是daytime服务。它的作用就是返回当前时间和日期,格式是字符串格式。

基于TCP的daytime服务 
daytime服务是基于TCP的应用,服务器在TCP端口13侦听,一旦有连接建立就返回ASCII形式的日期和时间,在传送完后关闭连接。接收到的数据被忽略。

基于UDP的daytime服务 
daytime服务也可以使用UDP协议,它的端口也是13,不过UDP是用数据报传送当前时间的。接收到的数据被忽略。

Daytime格式 
对于daytime没有特定的格式,建议使用ASCII可打印字符,空格和回车换行符。daytime应该在一行上。下面是两种流行的格式:

Weekday, Month Day, Year Time-Zone
例子:Tuesday, February 22, 1982 17:37:43-PST

和用于SMTP中的格式:

dd mmm yy hh:mm:ss zzz
例子:02 FEB 82 07:59:01 PST

|
从applet里面建立一个udp向服务器的13号端口发送请求,就能获得server的时间了。
(13号端口是时间服务端口)

|
web server 支持jsp,asp的话就可以不用applet了。否则就写个server与applet通信,但好像不会用在实际中。

|
作个server与applet通信,从server端取时间,然后显示到客户端!

|
同意: rinehart(rinehart) 的看法首先建立连接,然后从服务器端取得值传到客户端进行显示。我才想通的。

|
你可以参考《java 2编程详解》,里面有udp方式实现获取远程主机时间的例子。如果你用tcp来实时显示时间,我想主机性能将大幅度下降。

|
你需要安装Simple TCP/IP services ,缺省是不装的。

|
你问我windows2000下的时钟服务在Simple TCP/IP services 下面,但我没用过不知道是不是udp的.

    
 
 

您可能感兴趣的文章:

  • 高分请教:如何在linux上建vpn的客户端!
  • 高分请教:用 linux 下的 cvs 客户端访问 win2000 下的 cvsnt 服务器,请问 CVSROOT 应该怎么写?
  • 如何判断客户端是否安装了Jre????(高分,发表意见就给)
  • 高分请教socket简单问题:客户端send数据过去,没有反应,recv时候失败。
  • (高分)谁写过linux下的ftp客户端(访问linux服务器),请帮帮忙!有代码也行!
  • 高分相送!!! 在UNIX/QNX下在程序中如何实现FTP客户端?
  • 谁有jsp写的聊天室和留言本,高分求购,分不够再加!
  • 高分求助,不够再送(千兆网络)
  • 高分求教:root的空间不够了,怎样增加空间?
  • 高分求解,不够再加
  • 如何利用VMWARE安装98上网? --高分!!不够再给!
  • 高分求 原型包(分不够可再加,走过路过不要错过哟)
  • 今天在线,哪位大虾来指点,高分回报,不够再发帖补....
  • 高分求jsp中动态生成图片的相关资料、生成svg格式和pdf格式的资料,不够再加分
  • 为什么mount 会死机(高分求救,分不够可以再给)
  • 高分请教输入法的问题,分不够可以再给.
  • 高分通过 SCJP 的看这里:300分相送(先给100不够再加)
  • 有谁是懂MPI的吗?(高分重奖,不够再加)
  • 答问题抢高分!!! 不够再加!!!
  • 高分请教:Red Hat7.2 下怎么安装FreesWan (在线等,解决了立刻给分,不够再加分)
  • 请问这个问题用什么方法可以实现?很着急的问!高分求,不够我再给!HOOK?Driver?
  • 高分请教:qmail+vpopmail的问题!!!在线等待!!!不够可以再加!!!
  • 高分求助:linux内核中的汇编语言和Dos或windows下的汇编是一样的吗,有这方面的书或资料可供学习吗,分不够可再加,决不食言
  • RH linux 7.3网络配置~~高分100要是觉的分不够可加至1500分
  • 请问这个问题用什么方法可以实现?很着急的问!高分求,不够我再给!
  • 高分请教!关于log4j应用的问题。很难的。(分不够可以加分,来者有分!)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • 关于linu下的中文输入.(高分:300)
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3