Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java套接字读取来自其他应用程序的响应_Java_Sockets - Fatal编程技术网

Java套接字读取来自其他应用程序的响应

Java套接字读取来自其他应用程序的响应,java,sockets,Java,Sockets,我目前正在使用java套接字从软件连接到应用程序。 代码大致是这样的 import java.io.*; import java.net.*; import java.util.Scanner; public class Input { public static void main(String[] args) { try{ Socket s=new Socket("ok",10003); PrintWriter printWriter = new PrintWriter(

我目前正在使用java套接字从软件连接到应用程序。 代码大致是这样的

import java.io.*;  
import java.net.*;
import java.util.Scanner; 

public class Input {  
public static void main(String[] args) {  

try{

Socket s=new Socket("ok",10003);
PrintWriter printWriter = new PrintWriter(s.getOutputStream());
Scanner scanner = new Scanner( System.in );
BufferedReader inserver = new BufferedReader(new 
InputStreamReader(s.getInputStream()));

String str = scanner.nextLine();
String hisscanner = "\u0002"+str+"\u0003";


printWriter.write(hisscanner); 
s.shutdownInput();

String response = inserver.readLine();
System.out.println("FROM SERVER: " + response);
printWriter.close();

s.close();
scanner.close();

}catch (UnknownHostException ex) {
System.out.println("Could not connect to the server [Unknown exception]");
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}}
因此,我们向应用程序发送一个字符串,应用程序应该回复一个字符串。它已成功地将字符串发送到应用程序,并且该应用程序也正确地显示了回复

应用程序日志的示例:

问题是,回复不会出现在我制作的软件的控制台上

控制台:


我运行的软件总是返回空值,有人能帮我指出错误并帮我纠正吗?

当然你不应该运行
s.shutdownInput()
在尝试从套接字读取之前关闭输入?我改为s.shutdownOutput();它不会将字符串发送到应用程序。如果我删除了它,软件不会显示任何内容,也不会停止运行在运行ShutdowOutput之前,但在运行
printWriter.write(hisscanner)之前,可能需要调用
printWriter.flush()好吧,我是这样写的printWriter.flush();s、 关机输出();printWriter.write(他的扫描仪);它仍然不会将字符串发送到应用程序。现在,在编写任何内容之前,您正在刷新,甚至在编写任何内容之前,您正在关闭输出—这是怎么工作的?printWriter.write(他的扫描仪);printWriter.flush();s、 关机输出();似乎是正确的顺序。