gpt4 book ai didi

java - 扫描仪未找到线路

转载 作者:行者123 更新时间:2023-12-01 10:17:43 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写一个与服务器通信的程序。我尝试制作一个基本的通信程序,但我陷入了重复的消息中。一条消息有效,但是当我尝试在不关闭服务器和客户端的情况下获取多条消息时,我失败了。在我让它工作的任务中,我遇到了一个无法修复的错误。

我有以下类(class):

客户端

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class MainClass {
private static int port = 40021;
private static String ip = "localhost";

public static void main(String[] args) throws UnknownHostException,
IOException {
String command, temp;
Scanner scanner = new Scanner(System.in);
Socket s = new Socket(ip, port);
Scanner scanneri = new Scanner(s.getInputStream());
System.out.println("Enter any command");
command = scanner.nextLine();
PrintStream p = new PrintStream(s.getOutputStream());
p.println(command);
temp = scanneri.nextLine();
System.out.println(temp);
}

}

服务器

import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class MainClass {
public static void main(String args[]) throws IOException {
String command, temp;
ServerSocket s1 = new ServerSocket(40021);
Socket ss = s1.accept();
Scanner sc = new Scanner(ss.getInputStream());
while(true){
command = sc.nextLine();
temp = command + " Dat dus";
PrintStream p = new PrintStream(ss.getOutputStream());
p.println(temp);
}

}


}

我在 While 循环中遇到错误。

Exception in thread "main" java.util.NoSuchElementException: No line found

我可以理解为什么它会出错,但我完全不知道如何让它工作。

希望有人能帮助我。提前致谢。

最佳答案

在您的服务器代码中,即使客户端完成发送消息后,该行也会永远运行:-

 while(true){
command = sc.nextLine();
temp = command + " Dat dus";
PrintStream p = new PrintStream(ss.getOutputStream());
p.println(temp);
}

将其更改为:-

while(sc.hasNextLine()){
command = sc.nextLine();
temp = command + " Dat dus";
PrintStream p = new PrintStream(ss.getOutputStream());
p.println(temp);
}

并且还将整个服务器代码添加到永远运行的 while 循环中,因为您不希望服务器在客户端断开连接后关闭:-

public static void main(String args[]) throws IOException 
{
String command, temp;
ServerSocket s1 = new ServerSocket(40021);
while(true)
{
Socket ss = s1.accept();
Scanner sc = new Scanner(ss.getInputStream());
while(sc.hasNextLine())
{
command = sc.nextLine();
temp = command + " Dat dus";
PrintStream p = new PrintStream(ss.getOutputStream());
p.println(temp);
}
}
}

关于java - 扫描仪未找到线路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35803060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com