📄 serverlistener.java
字号:
package tcpSoundCommunication;
import java.net.*;
import java.io.*;
//import javax.sound.sampled.*;
//单线程.接收单个socket数据流
//ServerListener.java中的接收数据流的函数没有正确接收造成的
public class ServerListener implements Runnable{ //extends Thread
Socket socket;
//使用播放器AudioPlayer
AudioPlayer player = new AudioPlayer();
Thread thread;
public void start() {
thread = new Thread(this);
thread.setName("Client");
thread.start();
}
public void stop() {
try {
socket.close();
socket=null;
}
catch (IOException ex) {
}
thread = null;
}
//订阅者使用该接口
public ServerListener(Socket socket) {
this.socket = socket;
start(); // Calls run()
}
public void run() {
try {
while (true) {
if(socket.isConnected()!=true)break;
//接受流BufferedInputStream,with the specified buffer size
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
//播放BufferedInputStream
player.loadAudio(bis);
player.play();
}
System.out.println("closing...");
}
catch (Exception err) {
err.printStackTrace();
System.err.println("客户已断开连接ServerListener Exception");
}
finally {
try {
socket.close();
}
catch (IOException e) {
System.err.println("Socket not closed");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -