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();
}
}
}