java吧 关注:1,243,164贴子:12,718,341
  • 1回复贴,共1

大学生课设

只看楼主收藏回复

大佬们快帮我看看,为什么GUI界面上最后只有一张图片,另外两张图片接收不到
package 课设;
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(7686);
System.out.println("服务器已启动,等待客户端连接");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接");
// 创建新的线程处理客户端请求
ClientHandler clientHandler = new ClientHandler(socket);
Thread thread = new Thread(clientHandler);
thread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ClientHandler implements Runnable {
private Socket socket;
public ClientHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
// 创建输入流和输出流
BufferedReader dis = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter dos = new PrintWriter(socket.getOutputStream(), true);
// 读取客户端发送的请求类型
String requestType = dis.readLine();
if (requestType.equals("登录")){
// 读取客户端发送的用户名和密码
String username = dis.readLine();
String password = dis.readLine();
// 进行验证
if (validateUser(username, password)) {
dos.println("验证通过");
} else {
dos.println("密码或用户名错误");
}
} else if(requestType.equals("获取照片")){
File[] files = new File[3];
files[0] = new File("D:\\java\\上机训练\\课设\\特朗普.png"); // 替换为实际的照片文件路径
files[1] = new File("D:\\java\\上机训练\\课设\\拜登.png");
files[2] = new File("D:\\java\\上机训练\\课设\\罗恩.png");
for (File file : files) {
try (FileInputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[(int) file.length()];
fis.read(buffer);
// 发送照片数据给客户端
OutputStream os = socket.getOutputStream();
os.write(buffer);
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 关闭连接
socket.close();
System.out.println("客户端已断开连接");
} catch (IOException e) {
e.printStackTrace();
}
}
private static boolean validateUser(String username, String password) {
try {
BufferedReader fileReader = new BufferedReader(new FileReader("D:\\java\\上机训练\\课设\\用户名和密码.txt"));
String line;
while ((line = fileReader.readLine()) != null) {
String[] user = line.split(",");
if (user.length == 2 && user[0].equals(username) && user[1].equals(password)) {
fileReader.close();
return true;
}
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
private static boolean registerUser(String username, String password) {
try {
BufferedReader fileReader = new BufferedReader(new FileReader("D:\\java\\上机训练\\课设\\用户名和密码.txt"));
String line;
while ((line = fileReader.readLine()) != null) {
String[] user = line.split(",");
if (user.length == 2 && user[0].equals(username)) {
fileReader.close();
return false; // 用户名已存在,注册失败
}
}
fileReader.close();
// 将用户名和密码保存到文件中
BufferedWriter fileWriter = new BufferedWriter(new FileWriter("D:\\java\\上机训练\\课设\\用户名和密码.txt", true));
fileWriter.write(username + "," + password);
fileWriter.newLine();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
return true; // 注册成功
}
}
package 课设;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Vote extends JFrame {
public Vote() throws IOException {
// 创建与服务器的连接
Socket socket = new Socket("localhost", 7686);
// 创建输入流和输出流
BufferedReader dis = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter dos = new PrintWriter(socket.getOutputStream(), true);
// 发送要求
dos.println("获取照片");
JPanel root = new JPanel();
this.setContentPane(root);
// 创建一个 GridLayout 实例,GridLayout 实现了 LayoutManager 接口
root.setLayout(new GridLayout(3, 2));// 设置该窗体为一个3*2的网格
JLabel a1 = new JLabel();
try {
// 读取图片
Image image1 = ImageIO.read(socket.getInputStream());
if (image1 != null) {
a1.setIcon(new ImageIcon(image1));
} else {
System.out.println("Failed to read image1");
}
} catch (IOException e) {
e.printStackTrace();
}
JLabel a3 = new JLabel();
try {
// 读取图片
Image image2 = ImageIO.read(socket.getInputStream());
if (image2 != null) {
a3.setIcon(new ImageIcon(image2));
} else {
System.out.println("Failed to read image2");
}
} catch (IOException e) {
e.printStackTrace();
}
JLabel a5 = new JLabel();
try {
// 读取图片
Image image3 = ImageIO.read(socket.getInputStream());
if (image3 != null) {
a1.setIcon(new ImageIcon(image3));
} else {
System.out.println("Failed to read image3");
}
} catch (IOException e) {
e.printStackTrace();
}
JButton a2 = new JButton("投票给特朗普");
a2.setFont(new Font("微软雅黑", Font.PLAIN, 22));
a2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 在此处添加投票逻辑
dos.println("特朗普");
}
});
JButton a4 = new JButton("投票给拜登");
a4.setFont(new Font("微软雅黑", Font.PLAIN, 22));
a4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 在此处添加投票逻辑
dos.println("拜登");
}
});
JButton a6 = new JButton("投票给罗恩");
a6.setFont(new Font("微软雅黑", Font.PLAIN, 22));
a6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 在此处添加投票逻辑
dos.println("罗恩");
}
});
root.add(a1);
root.add(a2);
root.add(a3);
root.add(a4);
root.add(a5);
root.add(a6);
}
public static void main(String[] args) throws IOException {
// 创建一个 Vote 对象
Vote frame = new Vote();
// 设置窗口关闭时的操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗口大小
frame.setSize(540, 540);
// 显示窗口
frame.setVisible(true);
}
}
运行结果:
Failed to read image2
Failed to read image3


IP属地:甘肃1楼2023-12-15 00:45回复
    java的这个学了没用,都多老的东西了


    IP属地:广东来自Android客户端2楼2023-12-15 12:08
    回复