如何解决一个区块链投票java程序的输入出现循环问题
如果有人能帮我解决这个我想测试的程序,我会非常感激。这是一个基于区块链的电子投票程序。
我遇到的问题是第一个选项,Cast Votes。它要求角色,为了让它工作,你首先需要运行服务器,然后运行将连接到服务器的客户端。因此,当您在输入上输入 server 时,一切正常,但是,您尝试输入将客户端连接到服务器的客户端 server_address 端口,但它什么也不做。
private static final String DEFAULT_SERVER_ADDR = "localhost";
private static final int DEFAULT_PORT = 6777;
/*
* Everything starts from here!
*/
public static void main(String[] args) {
/*int clientId=0;*/
System.out.println(" ----- MAIN MENU ----- \n");
System.out.println("1. Cast Votes");
System.out.println("2. View Votes on Blockchain");
System.out.println("3. Count Votes");
System.out.println("0. Exit\n");
Scanner scanner = new Scanner(system.in);
System.out.println("Enter your choice: ");
int ch = scanner.nextInt();
if(ch == 1)
{
System.out.println("\n ----- Casting Votes ----- \n");
System.out.println("Please choose a role you want to be: server or client.");
System.out.println("server PORT - The port to listen to; \"6777\" is default port.");
System.out.println("client SERVER_ADDRESS PORT - The server address and port to connect to; \"localhost:6777\" is default address-prt combination.");
System.out.println("Make sure run the server first and then run client to connect to it.");
System.out.println("> ---------- ");
Scanner in = new Scanner(system.in);
String line = in.nextLine();
String[] cmd = line.split("\\s+");
if (cmd[0].contains("s"))
{ // server selected
/* work as server */
int port = DEFAULT_PORT;
if (cmd.length > 1) {
try {
port = Integer.parseInt(cmd[1]);
} catch(NumberFormatException e) {
System.out.println("Error: port is not a number!");
in.close();
return;
}
}
ServerManager _svrMgr =new ServerManager(port);
new Thread(_svrMgr).start();
}
else if (cmd[0].contains("c"))
{
//client selected
/* work as client */
String svrAddr = DEFAULT_SERVER_ADDR;
int port = DEFAULT_PORT;
if (cmd.length > 2) {
try {
svrAddr = cmd[1];
port = Integer.parseInt(cmd[2]);
} catch(NumberFormatException e) {
System.out.println("Error: port is not a number!");
in.close();
return;
}
}
ClientManager _cltMgr = new ClientManager(svrAddr,port);
/* new thread to receive msg */
new Thread(_cltMgr).start();
_cltMgr.startClient();
}
else {
showHelp();
in.close();
return;
}
in.close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。