0

サーバーで助けが必要です。特定のメッセージを受信した後、曲を正常に再生しましたが、停止を受信すると曲は停止しますが、サーバーがクラッシュします。よろしくお願いします。

    public class server
{
    private static final int PORT = 7777;

    private static ServerSocket serverSocket;
    private static Socket clientSocket;
    private static InputStreamReader inputStreamReader;
    private static BufferedReader bufferedReader;
    private static String message;


    @SuppressWarnings("unused")
    private String filename;  
    private static  Clip clip4;
    static Player player; 

    public server(String filename) {  
        this.filename = filename;  


    }
    public static void main(String[] args) throws Exception

    {


        try
        {
            serverSocket = new ServerSocket(PORT, 0, InetAddress.getLocalHost());

            System.out.println("IP:  " + serverSocket.getInetAddress() + "  Port:  " +  serverSocket.getLocalPort());

        } catch (IOException e)
        {
            System.out.println("Could not listen on port: 7777");
        }

        System.out.println("Server started. Listening to the port 7777");

        while (true)
        {

            try
            {
                clientSocket = serverSocket.accept();
                inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
                bufferedReader = new BufferedReader(inputStreamReader); 
                message = bufferedReader.readLine();


                System.out.println(message);{
                clip4 = null;
     if (message.equals("rock1")) {

                    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("D:/Andrd/Music/TheAll-AmericanRejects-Swing,Swing.wav"));
                      clip4 = AudioSystem.getClip();
                      clip4.open(inputStream);
                      clip4.start(); 

                } else if (message.equals("stop") && clip4 = null && clip4.isRunning()){
                     clip4.stop();
                 }
 }


                inputStreamReader.close();
                clientSocket.close();


            }catch (IOException ex)
            {
                System.out.println("Problem in message reading");
            }


        } 
        }

}

これは、このコードを実行した後のコンソールの外観です

 IP:  Timskie-PC/192.168.1.118  Port:  7777
    Server started. Listening to the port 7777
    rock1
    stop

それでも歌は止まらない

4

1 に答える 1

0

これを試して:

Clip clip4 = null; // Make this a member variable.
...
if (message.equals("rock1")) {
  AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File("D:/Andrd/Music/TheAll-AmericanRejects-Swing,Swing.wav"));
  clip4 = AudioSystem.getClip();
  clip4.open(inputStream);
  clip4.start();
} else if (message.equals("stop") && clip4 != null && clip4.isRunning())
  clip4.stop();
}

編集

Clip clip4 = null;はメンバー変数ではないことに注意してください。while ループ内で宣言されています。ループが繰り返されるたびに、再宣言されます。クラスレベルの「メンバー変数」として宣言すると、異なる結果が得られます。

于 2013-10-16T21:37:59.683 に答える