Java 服务器 GUI,有 4 个人可以在文本库中与自动选择的协调员进行交流

问题描述 投票:0回答:0

嗨,我最近得到了一个项目,我必须制作一个 java 代码,其中 4 个人可以使用 ip 地址和服务器进行连接。每个人都必须有一个唯一的 ID,并且能够与其他 3 个人进行交流。我似乎无法让它工作,但是因为我的导入似乎没有完成它们的工作,而且我的导师说我的代码中似乎缺少一些位。我还应该补充一点,协调员必须被选为第一个连接到服务器的人,如果那个人随机离开其他人,则被选中。

我试过添加 4 个成员类,也尝试过编辑协调器类,但这似乎没有任何帮助,非常感谢,如果我的问题措辞怪异,请不要在这里发帖。

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Member {
  private String id;
  private String ipAddress;
  private int port;
  private boolean isCoordinator;

  public Member(String id, String ipAddress, int port, boolean isCoordinator) {
    this.id = id;
    this.ipAddress = ipAddress;
    this.port = port;
    this.isCoordinator = isCoordinator;
  }

  public String getId() {
    return id;
  }

  public String getIpAddress() {
    return ipAddress;
  }

  public int getPort() {
    return port;
  }

  public boolean isCoordinator() {
    return isCoordinator;
  }
}

public class Coordinator {
  private List<Member> members;
  private ServerSocket serverSocket;

  public Coordinator() {
    members = new ArrayList<>();
  }

  public void startServer(int port) throws IOException {
    serverSocket = new ServerSocket(port);
    while (true) {
      Socket socket = serverSocket.accept();
      // handle incoming connection from new member
      Member newMember = handleNewMember(socket);
      // inform existing members of the new member
      informMembers(newMember);
    }
  }

  private Member handleNewMember(Socket socket) {
    // receive information from new member
    // generate unique ID for new member
    // add new member to list of members
    // return new member
  }

  private void informMembers(Member newMember) {
    // send information about new member to all existing members
  }

  private void updateMembers() {
    // check for unresponsive members and update list of members accordingly
  }

  public static void main(String[] args) throws IOException {
    Coordinator coordinator = new Coordinator();
    coordinator.startServer(8080);
  }
}

public class MemberInputFrame extends JFrame implements ActionListener {
  private JTextField idField;
  private JTextField ipAddressField;
  private JTextField portField;
  private JButton joinButton;

  public MemberInputFrame() {
    setTitle("Join Group");
    setSize(300, 150);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel inputPanel = new JPanel();
    inputPanel.add(new JLabel("ID:"));
    idField = new JTextField(20);
    inputPanel.add(idField);
    inputPanel.add(new JLabel("IP Address:"));
java class user-interface server ip-address
© www.soinside.com 2019 - 2024. All rights reserved.