Java解析问题-如何从服务器接收数据?

Java解析问题-如何从服务器接收数据?,java,Java,我有一个客户端代码,它正在发送请求Push 567,我正在服务器中处理该号码并将其发送回客户端。我的代码用于示例整数,但当我包含数字为PUSH 567的字符串时出现问题。当我在服务器程序中输入数字567并去掉整型值时,它工作得很好 编辑:它只适用于字符串或整数,但在我解析它时不起作用 客户端代码 public class Client { public static void main(String[] args) throws IOException { Socket s=new Sock

我有一个客户端代码,它正在发送请求
Push 567
,我正在服务器中处理该号码并将其发送回客户端。我的代码用于示例整数,但当我包含数字为PUSH 567的字符串时出现问题。当我在服务器程序中输入数字567并去掉整型值时,它工作得很好


编辑:它只适用于字符串或整数,但在我解析它时不起作用

客户端代码

 public class Client 
{
public static void main(String[] args) throws IOException
{
Socket s=new Socket("127.0.0.1",1342);
Scanner sc1=new Scanner(s.getInputStream()); 
  String req = "PUSH 567";

  PrintStream p = new PrintStream(s.getOutputStream());
  p.println(req);

  int temp=sc1.nextInt();
  System.out.println(temp);

}
}
服务器代码

  public class NewServer 
  {
  public static void main(String[] args) throws IOException
  {
    ServerSocket k=new ServerSocket(1342);
    Socket ss=k.accept();
    Scanner sc=new Scanner(ss.getInputStream());

    String s  = sc.next();
    int i = Integer.valueOf(s);
    int temp=i+2;

    PrintStream p=new PrintStream(ss.getOutputStream());
    p.println(temp);

}
}
我犯了一个错误

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Tester.Client.main(Client.java:24)

您正在发送“PUSH 567”,但您的服务器编码为,好像输入中只有一个数字。因此,您的服务器必须出现故障,出现
NumberFormatException
,这将导致服务器退出,而不是返回任何内容,这将导致客户端失败。请尝试打印字符串本身,然后查看您的操作get@EJP我觉得解析就足够了。我必须做什么更改?它只适用于字符串或整数。@JavaHopper它适用于字符串
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;

    public class NewServer {

      public static final void main(final String[] args) {
        int portNumber = 1342;

        try ( 
            ServerSocket serverSocket = new ServerSocket(portNumber);
            Socket clientSocket = serverSocket.accept();
            PrintWriter out =
                new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(
                new InputStreamReader(clientSocket.getInputStream()));
        ) {
          String s = "SERVER: Started.";
          out.println(s);
          while ((s = in.readLine()) != null) {
              System.out.println("RECV: "+s);
              String[] ss = s.split("PUSH\\s");
              out.println(Integer.parseInt(ss[1]) + 2 + "");
              System.out.println("SEND: " + Integer.parseInt(ss[1]) + 2);
          }
        } catch (IOException e) {
          e.printStackTrace();
        }

      }
    }


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

  public static final void main(final String[] args) {
    String hostName = "127.0.0.1";
    int portNumber = 1342;

    try (
        Socket client = new Socket(hostName, portNumber);
        PrintWriter out = new PrintWriter(client.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
            new InputStreamReader(client.getInputStream()));
    ) {
      String fromServer = null;
      client.setKeepAlive(true);
      while ((fromServer = in.readLine()) != null) {
        System.out.println(fromServer);
        out.println("PUSH 567");
      }
    } catch (UnknownHostException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}