Java套接字:程序在套接字处停止。getInputStream()是否有错误?
“输入流之前”是cmd行上的最后一个lifesign。没有抛出异常。为什么会这样?我不明白 args[0]是5000。Java套接字:程序在套接字处停止。getInputStream()是否有错误?,java,sockets,serialization,Java,Sockets,Serialization,“输入流之前”是cmd行上的最后一个lifesign。没有抛出异常。为什么会这样?我不明白 args[0]是5000。 //编辑:flush没有帮助。这是因为如果InputStream为空,ObjectInputStream(InputStream in)-构造函数是一个阻塞调用 : 创建从指定的InputStream读取的ObjectInputStream。从流中读取序列化流头并进行验证。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头 可能, InetAddre
//编辑:flush没有帮助。这是因为如果InputStream为空,
ObjectInputStream(InputStream in)
-构造函数是一个阻塞调用
:
创建从指定的InputStream读取的ObjectInputStream。从流中读取序列化流头并进行验证。此构造函数将阻止,直到相应的ObjectOutputStream写入并刷新标头
可能,
InetAddress host = InetAddress.getLocalHost();
Socket link = new Socket(host, Integer.parseInt(args[0]));
System.out.println("before input stream");
ObjectInputStream in = new ObjectInputStream(link.getInputStream());
System.out.println("before output stream");
ObjectInputStream out = new ObjectOutputStream(link.getOutputStream());
可能返回null,但通过查看类文件,应该会返回错误。
我注意到的另一件事是,你声明:
link.getInputStream();
因此,您将ObjectInputStream声明为没有强制转换的ObjectOutputStream(在这里无论如何都不合适)
你应该试试:
ObjectInputStream out = new ObjectOutputStream(link.getOutputStream());
这应该可以工作,因为脚本可能会将System.out排队,但在初始化之前请注意错误
告诉我这是否有效:D是否从调试器运行它?也许这会打断代码,让您了解发生了什么。@Brian它会在构造函数中自动连接。@user代码的最后一行不会编译<代码>。输入。。out=new..Output..显然,我的内存不足。我被纠正了:)另外:ObjectInputStream out=新的ObjectOutputStream(link.getOutputStream());因此,如果我首先在客户端和服务器端生成outputstream,应该可以工作了吗?有趣的。。。。我要试一试。谢谢,好的。如果我交换流的创建,它就会工作。就像下面写的一样,
ObjectInputStream-out
-这只是一个打字错误。thanks@all!非常基本的事情,但非常有必要知道。谢谢你救了我的命
ObjectOutputStream out = new ObjectOutputStream(link.getOutputStream());