开放性实验实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于JAVA的语音、图像信号处理系统

实验报告

学院:信息与电子工程学院

班级:软件工程092

学号:109029041

姓名:钱枫

指导教师:宋起文

二O一一年十二月

一.课程设计原理

开发语言:Java(J2SE)

开发平台:MyEclipse

开发背景:J ava中提供的套接字功能为通信系统的实现提供了基础,通过IO的流传输具体实现了数据的实时传输,javax.sound.sampled 类提供了读取、写入声卡数据的具体方法。

1.套接字:

客户端Socket:Socket(InetAddress host,int port):声明一个连接到某地址的主机内的相应端口的套接字。工作完毕后,使用流对象的close()方法关闭网络通信的输入输出流,用Socket对象的close()方法关闭套接字;

服务端的ServerSocket:ServerSocket(int port,int backlog):声明一个有相应端口被申请的服务器套接字,backlog表示在序列里等待连接的客户端数目,若等待数超过backlog值,则客户端的连接被拒绝,若未声明具体值,则默认随机选择一空闲端口。工作完毕后,使用流对象的close()方法关闭网络通信的输入输出流,用ServerSocket对象的close()方法关闭套接字。

2.输入、输出流:

New BufferedWriter(new OutputStreamWriter(socket2.getOutputStream())):

向套接字的输出数据流写入格式化的数据;

new BufferedReader(new InputStreamReader(socket2.getInputStream())):

从套接字的输入数据流读取格式化的数据。

2.javax.sound.sampled类接口和方法:

new AudioFormat(8000.0f, 8, 2, true, true):设置音频数据格式;TargetDataLine接口:从音频捕获设备获取其数据的数据行;SourceDataLine接口:将音频字节写入设备源数据行;targetDataLine.read(byte[] b, int off, int len):从数据行的输入缓冲区读取音频数据;

sourceDataLine.write(byte[] b, int off, int len):通过此源数据行将音频数据写入混频器。

二.源代码:

客户端部分:

package Communication;

import java.awt.*;

import java.awt.event.*;

import .*;

import javax.swing.*;

import java.io.*;

import javax.sound.sampled.*;

class Volume extends Thread {

private Client tcpClient;

public boolean isConn;

public Volume(Client _tcpClient) {

tcpClient = _tcpClient;

}

public void run() {

StringBuffer sb;

while (isConn) {

sb = new StringBuffer();

int r = (int) (Math.random() * 51);

for (int i = 0; i < r; i++) {

sb.append('.');

}

tcpClient.V oiceSpectrum.setText(sb.toString());

try {

sleep(200);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

tcpClient.V oiceSpectrum.setText(null);

}

}

class ClientThread extends Thread {

private Client tcpClient;

private Volume volume;

private Socket socket;

private OutputStream output;

private InputStream input;

private TargetDataLine targetLine;

private SourceDataLine sourceLine;

private boolean isConn;

public ClientThread(Client _tcpClient) {

tcpClient = _tcpClient;

}

public void run() {

try {

socket = new Socket("localhost", 9999);

} catch (Exception e) {

JOptionPane.showMessageDialog(tcpClient.frame,

"语音服务未开启", "错误", JOptionPane.ERROR_MESSAGE);

tcpClient.tglbtnConn.doClick();

return;

相关文档
最新文档