服务器
package com.ff.chat.chatserver.frame;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
public class ServerFrame extends JFrame {
JTextArea msgArea;
ArrayList<Socket> socketArrayList = new ArrayList<>();
boolean serverFlag = true;
StringBuffer sb = new StringBuffer();
ServerSocket serverSocket;
public void creatFrame(){
this.setTitle("聊天室-服务器端");
this.setSize(500,500);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
JPanel jp = new JPanel(new BorderLayout());
JPanel centerPanel = new JPanel();
msgArea = new JTextArea(30,40);
msgArea.setEditable(false);
JScrollPane jsp = new JScrollPane(msgArea);
centerPanel.add(jsp);
jp.add(centerPanel);
this.add(jp);
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
int res = JOptionPane.showConfirmDialog(null,"确定要关闭服务器吗?",
"操作提示",JOptionPane.OK_CANCEL_OPTION);
if(res == 0){
try {
dispose();
serverSocket.close();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
});
}
public void startServer(){
try {
serverSocket = new ServerSocket(9998);
System.out.println("等待客户端连接");
while (serverFlag){
if(serverSocket.isClosed()){
serverFlag = false;
break;
}
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功");
socketArrayList.add(socket