一、项目
做一个简易的聊天窗口程序,实现多人登录在线聊天功能。没有数据库的导入,等后期学习更多知识之后,再进行优化。
Server.java(服务器端)
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Server extends JFrame {
private JTextArea showDialog = null; // 定义文本区
private ServerSocket serverSocket = null; // 定义接收插座
private int port = 0; // 服务器应用程序所占的TCP端口号
// 创建一个用来存放为每一个客户端提供服务的线程对象的集合
List<ForClient> clients = new ArrayList<ForClient>();
void init() {
showDialog = new JTextArea(10, 20); // 设置文本区的大小
this.add(new JScrollPane(showDialog)); // 将带有滚动条文本区添加在窗口中
this.setTitle("117聊天室服务器端"); // 定义窗口属性
this.setBounds(50, 50, 500, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.validate();
}
void start() {
this.init();
port = 1111;
try {
serverSocket = new ServerSocket(port); // 将端口号接入插座接口
showDialog.setText("服务器已就绪,等待客户端的连接请求。。" + "\n");
while (true) {
Socket socket = serverSocket.accept(); // 建立插座接口,实现连接。
showDialog.append("连接已建立!" + "\n");
ForClient client = new ForClient(socket); //
clients.add(client); // 将对象存入集合里
new Thread(client).start(); // 建立新的线程开始运行
}
} ca