所以对于学校我试图用2个类进行异步聊天程序;服务器和客户端。基本上,客户端连接到服务器,并将文本写入字符串或输入。如果输入,则客户端侦听文本,而服务器则转而发送。如果输入,则客户端断开连接,服务器重置连接并等待客户端再次连接。我试图用一些do..whiles解决这些要求,然后使用continue标签来重置连接。现在,如果客户端发送连接重置,但服务器只是停止构建而不是返回到我的startConnections标签。这是我的服务器代码,我正在使用中断:
public static void main(String args[]) {
startConnections:
{
System.out.println("RESET TEST");
try {
server = new ServerSocket(12345, 100);
System.out.println("Waiting for client");
connection = server.accept();
System.out.println("Client Connected");
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());
do {
do {
messageIn = (String) input.readObject();
System.out.println("CLIENT SAYS: " + messageIn);
} while ((!messageIn.equals("<OVER>")) & (!messageIn.equals("<OUT>")));
if (messageIn.equals("<OUT>")) {
break startConnections;
}
do {
System.out.print("RESPONSE: ");
keyboardInput = new Scanner(System.in);
messageOut = keyboardInput.nextLine();
output.writeObject(messageOut);
} while (!messageOut.equals("<OVER>"));
} while (!messageOut.equals("<OUT>"));
} catch (Exception e) {
System.out.println("Oops SERVER! : " + e.toString());
}
}
}
答案 0 :(得分:1)
它有效as it should
break语句终止带标签的语句;它不会将控制流转移到标签上。控制流程在标记(终止)语句之后立即转移到语句。
所以break
调用之后的下一个执行语句是标有startConnections
要获得所需的行为,您需要使用continue
:
continue startConnections;
带标签的continue语句会跳过标有给定标签的外循环的当前迭代。