Java-通过TCP端口发送MP3文件的字节数组并接收

Java-通过TCP端口发送MP3文件的字节数组并接收,java,tcp,byte,mp3,port,Java,Tcp,Byte,Mp3,Port,好的,我正在开发一个带有普通音频播放器gui的程序,但它可以选择将当前播放的歌曲转换为字节[],然后发送到客户端,然后再转换回mp3文件并播放。不完全是流媒体,但有点像实时FTP。然而,我似乎无法发送数据包,接收者创建了一个大小为0kb的空白mp3文件。什么都没有写,我知道为什么会这样。请帮忙 import java.io.*; import java.net.*; import java.lang.*; import java.util.*; import javazoom.jl.player

好的,我正在开发一个带有普通音频播放器gui的程序,但它可以选择将当前播放的歌曲转换为字节[],然后发送到客户端,然后再转换回mp3文件并播放。不完全是流媒体,但有点像实时FTP。然而,我似乎无法发送数据包,接收者创建了一个大小为0kb的空白mp3文件。什么都没有写,我知道为什么会这样。请帮忙

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import javazoom.jl.player.*;
import org.apache.commons.io.IOUtils;
import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Send {

public String address;
public int port;
public byte[] b;

public Send(String a, int p)
{
    a = address;
    p = port;


    try
    {
        System.out.println("Server started");
        System.out.println(b.length);

        ServerSocket ss = new ServerSocket(2345);
        Socket socket = ss.accept();
        System.out.println("Waiting for client to connect...");
        if(socket.isConnected())
        {
            System.out.println("Client connected");
        }

        OutputStream out = socket.getOutputStream(); 
        DataOutputStream dos = new DataOutputStream(out);
        if(b.length > 1)
        {
            dos.write(b);
            dos.flush();
            dos.close();
        }



    }catch(Exception e){}
}
}

这是Receiver类,它有一个完整的gui,但是我不会添加那些垃圾,除非你认为它会有帮助

import java.io.*;
import java.net.*;
import java.lang.*;
import java.util.*;
import javazoom.jl.player.*;
import org.apache.commons.io.IOUtils;


public class Recieve {

String host = "localhost";
int port = 2345;
byte[] inFile;
public File file;
public static Socket socket;

public Recieve()
{
    System.out.println("Waiting to connect to server..");

    try
    {   

        socket = new Socket(host,port);

        if(socket.isConnected())
        {
            System.out.println("Connected to server on "+host+": "+port);
        }

        file = new File("H:\\Song.mp3");
        InputStream is = socket.getInputStream();
        FileOutputStream fos = new FileOutputStream(file);
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        int bytesRead = is.read(inFile, 0, inFile.length);
        bos.write(inFile, 0, bytesRead);
        bos.close();



        FileOutputStream fop = new FileOutputStream(file);

        fop.write(inFile);
        fop.flush();
        fop.close();


        Playmusic play = new Playmusic(file);
        Thread one = new Thread(play);
        one.start();    

        if(file.length() < 2)
        {
            file.delete();
        }


    }catch(Exception e){System.out.println("ERROR ON STREAM "+e.getMessage());}



}

}

不要考虑由于切换计算机而导致的文件路径不同。我已经切换到发送方使用DataOutputStream发送字节数组。但是接收器只使用普通的输入流。这不匹配。您应该使用DataOutputStream/DataInputStream对或普通OutputStream/InputStream。