在线网络速度测试JAVA程序(三):客户端使用applet的Web方式

前面实现了命令控制台模式和GUI客户端,本以为applet很简单,结果最后还用了证书和签名机制,才圆满实现功能。废话不如,先实现基本的applet代码:

jperfapplet.java

import java.awt.EventQueue;
import javax.swing.JApplet;
public class jperfapplet extends JApplet {
    public void init()
    {
        EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
                appframe frame=new appframe();
                add(frame.frame);
            }
                                                                                    
        });
    }
}

建立一个html网页,将编译后的applet放在里面:

jperfapplet.htm

<html>
<head><title>网络应用速度测试</title></head>
<body>
    <p></p>
    <center>
        <applet codebase="./" code="jperfapplet.class"  width="600" height="350">
        </applet>
    </center>
</body>
</html>


在浏览器里执行,出现Socket:can't connect: java.security.AccessControlException: access denied(java.net.SocketPermission)的错误,最后通过使用签名才解决,参考方法源自《Java高级编辑(JDK6版)》。


1、将编译后bin下的.class文件打包为jar文件

jar -cvf0 jperf.jar *

2、创建包含密钥的文件:

keytool -genkey -keystore myKeystore -alias myself

提示输入密钥时,输入一个自己好记的密码如password,接下来会请求几行数据填加一些注册信息,最后会提示输入一个私钥,我用的是和前面一样的password。

3、生成一个自签名的证书

keytool -selfcert -alias myself -keystore myKeystore

提示输入密钥存储口令,输入之前的密码password。

4、现在可以对jar文件进行签名了

jarsigner -keystore myKeystore jperf.jar myself

输入密钥password即完成了签名。

5、修改jerpfapplet.htm文件:

<html>
<head><title>网络应用速度测试</title></head>
<body>
    <p></p>
    <center>
        <applet codebase="./" code="jperfapplet.class" archive="jperf.jar" width="600" height="350">
        </applet>
    </center>
</body>
</html>

现在打开jperfapplet.htm,加载applet时会提示是否信任,点击信任后,网络测试就可以正常进行了。

同时,可以直接运行执行jar包的命令:

服务端:java -classpath jperf.jar jperf

客户端:命令控制台方式java -classpath jperf.jar jperf -client -remote_addr x.x.x.x

            GUI方式java -classpath jperf.jar jperfwin


完整的代码和编译版本见附件中,欢迎大家指正。

你可能感兴趣的:(签名,applet,java程序)