51,412
社区成员
发帖
与我相关
我的任务
分享 public void buildGUI() {
this.setTitle("监听服务器");
this.setSize(500, 500);
this.setLocationRelativeTo(null);
Container container = this.getContentPane();
container.setLayout(new BorderLayout());
JScrollPane centerPane = new JScrollPane();
dataArea = new JTextArea();
dataArea.setFont(new Font("宋体",Font.BOLD,15));
centerPane.setViewportView(dataArea);
container.add(centerPane,BorderLayout.CENTER);
dataArea.setEditable(false);
JPanel bottomPanel = new JPanel();
startBtn = new JButton("启动服务");
resetBtn = new JButton("清空数据区域");
bottomPanel.add(startBtn);
bottomPanel.add(resetBtn);
container.add(bottomPanel, BorderLayout.SOUTH);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
startBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(startBtn.getText() == "启动服务") {
try {
serverSocket = new ServerSocket(9997);
} catch (IOException e1) {
e1.printStackTrace();
}
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SZIE);
service();
dataArea.append("服务器监听已启动\n");
startBtn.setText("停止服务");
}else {
startBtn.setText("启动服务");
try {
serverSocket.close();
} catch (IOException e1) {
e1.printStackTrace();
}
dataArea.append("服务器关闭!\n");
}
}
});
resetBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dataArea.setText(null);
}
});
}
public void service(){
while(true) {
try {
socket = serverSocket.accept();
executorService.execute(new Runnable() {
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
@Override
public void run() {
BufferedReader br = null;
try {
System.out.println("建立连接" + socket.getInetAddress() + ":" + socket.getPort());
dataArea.append("建立连接" + socket.getInetAddress() + ":" + socket.getPort());
br = getReader(socket);
String data = null;
if((data = br.readLine()) != null) {
//dealData(data);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(socket != null) {
socket.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
Thread cu = null;
@Override
public void actionPerformed(ActionEvent e) {
if(startBtn.getText() == "启动服务") {
try {
serverSocket = new ServerSocket(9997);
} catch (IOException e1) {
e1.printStackTrace();
}
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SZIE);
cu = new Thread(){
public void run() {
service();
}
}
dataArea.append("服务器监听已启动\n");
startBtn.setText("停止服务");
}else {
startBtn.setText("启动服务");
try {
cu.interrupt();// 停止线程
serverSocket.close();
} catch (Exception e1) {
e1.printStackTrace();
}
dataArea.append("服务器关闭!\n");
}
}