嗨,我最近得到了一个项目,我必须制作一个 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:"));