大 连 博 涵 咨 询 服 务 有 限 公 司
吕 东 兵
---
---- java 作 为 一 种 网 络 编 程 语 言 , 在 浏 览 器 中 即 可 以 进 行 动 画 演 示 , 也 可 以 播 放 声 音 。 在 人 机 的 交 互 过 程 中 , 为 了 加 强 效 果 或 起 到 提 示 的 作 用 , 需 要 加 入 声 音 。
---- java 的 包 java.applet 中 有audioclip 接 口 , 此 接 口 封 装 有 关 声 音 片 断 的 一 些 常 用 方 法 。 用 法 如 下:
audioclip audio;
audio=getaudioclip(getcodebase(),"hi.au");
audio.play();
---- 第 一 行 生 成 接 口audioclip 的 一 个 变 量 , 第 二 行 利 用 此 变 量 取 得 声 音 文 件 hi.au , 此 文 件 与 程 序 本 身 在 同 一 目 录 下, getcodebase() 方 法 是 用 来 取 得applet 的class 文 件 的url 地 址 。 第 三 行 是 播 放 声 音 文 件 。 在applet 中 利 用 此 用 法 可 在 浏 览 器 中 发 出 声 音 。 那 么 , 在application 中 是 否 也 可 以 用 此 方 法 来 发 出 声 音 呢 ? 不 可 以 。 因 为 接 口audioclip 是 在 包 java.applet 中 , 而 此 包 只 适 用 于applet 。 是 否 可 以 用 其 它 方 法 来 实 现 呢 ? 我 们 可 以 利 用 1 中 的 技 巧 来 编 写 一 个 即 是applet 又 是 application 的 程 序 试 试 。 结 果 , 还 是 不 行 。 这 是 因 为play() 方 法 只 能 在applet 中 实 现 , 对 于application play() 方 法 是 不 能 够 被 调 用 的 。
---- 那 么 , 如 何 在application 中 实 现 发 声 提 示 呢 ?
---- 记 得 vb 中 有 beep 语 句 来 使 系 统 发 声 器(system speaker ) 发 声 , 那 么 ,java 中 也 应 有 类 似 的 方 法 。
---- 在 java 的 java.awt.toolkit 类 中 有 方 法beep() 是 来 实 现 这 一 功 能 的 。 类 toolkit 是 抽 象 类 , 它 是 实 现awt 的 所 有 工 具 的 父 类 。 java 中 的 抽 象 类 是 不 能 够 实 例 化 的 , 但 是 一 般 地 , 抽 象 类 可 以 生 成 变 量 , 然 后 利 用 抽 象 类 中 的 某 一 方 法 来 取 得 此 类 的 替 代 品 。 在 toolkit 中 是 利 用 getdefaulttoolkit() 方 法 来 实 现 的 。 现 在 给 出 一 个 实 例:
---- 这 是 一 个 客 户 机/ 服 务 器 的application 。 当 服 务 器 运 行 时 如 果 有 客 户 机 与 服 务 器 相 连 , 则 服 务 器 会 自 动 发 声 警 报 提 示 服 务 器 端 的 用 户 有 客 户 要 与 自 己 进 行 对 话 。
---- 程 序 如 下:
---- 服 务 器:
import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.*;
public class servert{
public static void main(string[] args){
server server;
string clientrequest;
boolean quit=false;
server=new server(8001);
while(!quit){
datainputstream keyboard=new
datainputstream(system.in);
try{
clientrequest=server.in.readline();
if(clientrequest.trim().equals("close")){
system.out.println("client says:
"+clientrequest);
system.exit(1);
}
system.out.println("client says:
"+clientrequest);
server.out.println(keyboard.readline());
}catch(ioexception e){
system.out.println("ioexception
in server.in.readline()"+e);
system.exit(1);
}
}
}
}
class server{
private serversocket server;
private socket socket;
public datainputstream in;
public printstream out;
public server(int port){
try{
server=new serversocket(port);
system.out.println("
****************************
*****************************");
system.out.println(" @(#)net
applecation version 1.00 97/12/30 ");
system.out.println(" copyright (c) 1997
(lui dongbing) all rights reserved.");
system.out.println("
******************************
***************************");
system.out.println(" server is: "+server);
socket=server.accept();
for(int i=0;i< 260;i++){ // 发 声 提 示
toolkit.getdefaulttoolkit().beep();
}
system.out.println(" server is ready ! ");
in=new datainputstream(socket.getinputstream());
out=new printstream(socket.getoutputstream());
out.println("we connect in "+new date());
}catch(ioexception e){
system.out.println("server is failied !");
}
}
}
客 户 机 :
import java.util.*;
import java.io.*;
import java.net.*;
public class clientt{
public static void main(string[] args){
string welcome,response;
client client;
client=new client("202.120.80.20",8001); // #1
datainputstream keyboard=new datainputstream(system.in);
boolean bye=false;
while(!bye){
try{
welcome=client.in.readline();
system.out.println(" server says: "+welcome);
client.out.println(keyboard.readline());
}catch(ioexception e){
system.out.println(" the talk is closed !");
system.exit(1);
}
}
try{
thread.sleep(200);
}catch(exception e){
system.out.println("it is a bug !");
}
}
}
class client{
public datainputstream in;
public printstream out;
private socket client;
public client(string host,int port){
try{
client=new socket(host,port);
system.out.println("
*********************************************************");
system.out.println(" @(#)net
applecation version 1.00 97/12/30 ");
system.out.println(" copyright (c)
1997 (lui dongbing) all rights reserved.");
system.out.println("
*********************************************************");
system.out.println(" client socket:"+client);
system.out.println(" client is ready ! ");
out=new printstream(client.getoutputstream());
in=new datainputstream(client.getinputstream());
}catch(ioexception e){
system.out.println(" ioexception !"+e);
system.exit(1);
}
}
}
---- 程 序 中 #1 处 的"202.120.80.20" 读 者 可 改 为 自 己 相 应 的 地 址 。
闽公网安备 35060202000074号