出處 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) {
   
  }
 }
}

創作者介紹
創作者 喜歡亂搞的世界 的頭像
ffyy99

喜歡亂搞的世界

ffyy99 發表在 痞客邦 留言(0) 人氣( 378 )