出處 http://lklkdawei.blog.163.com/blog/static/32574109200861031129157/
by 強大的大陸人
播放的是mp3格式音乐,需要
commons-loggin-1.1.jar
jl1.0.jar
jlayer-1.0.jar
log4j-1.2.14.jar
mp3spi-1.9.4.jar
tritonus_share-1.0.jar
客户端代码:
package com.e104.socket.sound;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
/**
* <p>@Description:</p>
* <p>@Company: 104人力银行</p>
* <p>@CreateDate: 2008-7-10</p>
* @author: dawei.li
* @version: 1.0
*/
public class SocketClient {
public static void main(String []args){
Socket socket =null;
DataOutputStream out = null;
DataInputStream inAudio = null;
InputStream is= null;
OutputStream os = null;
PrintStream ps = null;
// 建立连接
try {
socket = new Socket("10.22.8.12",4321);
os = socket.getOutputStream();
ps = new PrintStream(os);
//发送消息-- 客户端发送消息
while(true){
ps.println("http://jy.hlj.stats.gov.cn/xiuxianshiguang/xxsg2006032819-07.mp3");
// 获取服务器端信息
inAudio = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
System.out.println(inAudio.read());
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(inAudio);
AudioFormat format = audioInputStream.getFormat();
AudioFormat decodeFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
format.getSampleRate(),
16,
format.getChannels(),
format.getChannels()*2,
format.getSampleRate(),false);
AudioInputStream decodeIn = AudioSystem.getAudioInputStream(decodeFormat, audioInputStream);
SourceDataLine sdl = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class,decodeFormat);
sdl = (SourceDataLine)AudioSystem.getLine(info);
sdl.open();
sdl.start();
int nByteRead = 0;
byte[]abData = new byte[524288];
while(nByteRead!=-1){
nByteRead = decodeIn.read(abData, 0, abData.length);
if(nByteRead>=0){
sdl.write(abData, 0, nByteRead);
}
}
sdl.drain();
sdl.close();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
服务器代码:
package com.e104.socket.sound;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
/**
* <p>@Description:</p>
* <p>@Company: 104人力银行</p>
* <p>@CreateDate: 2008-7-10</p>
* @author: dawei.li
* @version: 1.0
*/
public class SocketServer {
public void start(){
Socket socket = null;
try {
ServerSocket server= new ServerSocket(4321);
while(true){
socket = server.accept();
System.out.println("建立Socket连接");
// 从客户端获取
DataInputStream dis = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
}
} catch (Exception e) {
// TODO: handle exception
}
}
public static void main(String []args){
ServerSocket server ;
Socket socket;
String url; // 接收 客户端的 URL
InputStream is;
OutputStream os;
DataInputStream dis;
BufferedOutputStream bo;
try {
server = new ServerSocket(4321);
while(true){
socket = server.accept(); // 开始接收
System.out.println("服务器启动完毕");
is = socket.getInputStream(); //输入流 --- 客户端 ---> 到服务器
os = socket.getOutputStream(); // 输出流 服务器 ---> 客户端
//建立数据流
dis = new DataInputStream(new BufferedInputStream(is));
System.out.println("客户端发送的信息:"+dis.readLine());
bo = new BufferedOutputStream(os); // 输出流 放入 缓冲区中
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("E:/4.mp3"));
DataInputStream in = new DataInputStream(new BufferedInputStream(audioInputStream));
DataOutputStream dos = new DataOutputStream(bo);
// 开始 写文件
byte[]buf = new byte[524288];
while(true){
int read = 0;
if(in!=null){
read = in.read(buf);
}
if(read==-1){
break;
}
dos.write(buf,0,read);
}
dos.flush();
in.close();
socket.close();
System.out.println("音乐播放完毕");
}
} catch (Exception e) {
}
}
}
請先 登入 以發表留言。