我编写了一个需要连接多个服务器套接字的程序。每次连接到服务器时,我都尝试将服务器的InetAddress和localPort保存为ArrayList(connectedServers
)中的ArrayList。所以connectedServers
是ArrayLists的ArrayList。在建立与服务器的新连接之前,我尝试通过connectedServers
检查来检查相同的服务器是否已与此客户端连接。
在eclipse中调试时,调试器在以下代码中标记为“ERROR”的行停止。在eclipse中,将打开一个新标签,标题为NumberFormatException(Throwable).<init>(String) line: 197
,显示消息Source not found
。
如果我将标记的代码行放在if
块之外,则连接成功。但我需要它在if
块内部工作。可能是什么问题?代码如下。
public static ArrayList<ArrayList<Object>> connectedServers = new ArrayList<ArrayList<Object>>();
public static void main (String args[]) throws IOException {
listeningPort = 1111;
String host = takeInput("Host");
int port = takeInputInt("Port");
Socket a = connectToServer(host, port);
if (a != null) {
//....
}
//....
}
public static String takeInput(String inputName) throws IOException {
System.out.print(inputName+": ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
return input;
}
public static int takeInputInt(String inputName) throws IOException {
System.out.print(inputName+": ");
Scanner inputInt = new Scanner(System.in);
int input = inputInt.nextInt();
return input;
}
public static Socket connectToServer(String host, int port) throws IOException {
ArrayList<Object> element = new ArrayList<>();
element.add(host);
element.add(port);
//println(connectedServers);
//println(element);
//println(connectedServers);
if (connectedServers.contains(element) != true) {
//println(host + " " + port);
Socket fellowServer = new Socket(host, port);//<-------ERROR!!
connectedServers.add(element);
element.remove(host);
element.remove(0);
return fellowServer;
}
else{
return null;
}
}
答案 0 :(得分:0)
输入
时可能出现问题Scanner inputInt = new Scanner(System.in);
int input = inputInt.nextInt();