我正在尝试创建一个服务器侦听器。由于数据的性质,它坐下来等待来自客户端的数据并执行设置操作。但是现在,在接收到第一个数据流后,它进入了资源消耗状态,内存使用量猛增,CPU 使用率达到了单个核心的极限。
1 - 我该如何解决这个问题?我怎样才能让它在没有所有资源的情况下听,正如你所看到的,它是一个非常非常小的程序。
2 - 发送这些数据流的客户端本身运行一次。它启动,连接到服务器,发送数据并退出。当服务器仍然“开启”时,如果我再次重试运行客户端,服务器不会收到数据。
服务器代码:
package mediaserver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Main {
ServerSocket ss;
Socket s;
BufferedReader br;
public Main() throws IOException{
ss = new ServerSocket(1111);
s = ss.accept();
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
new Thread(new runner()).start();
}
class runner implements Runnable{
public void run(){
while(true){
try {
String n = br.readLine();
System.out.println(n);
} catch (IOException ex) {
}
finally{
try {
s.close();
ss.close();
} catch (IOException ex) {
}
}
}
}
}
public static void main(String[] args) throws IOException {
new Main();
}
}
客户代码
package mediaserver;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class test {
public static void main(String [] args) throws UnknownHostException, IOException, InterruptedException{
Socket s = new Socket("127.0.0.1", 1111);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("");
bw.newLine();
bw.flush();
}
}