java中使用套接字的对象传输
当我尝试在服务器上使用java中使用套接字的对象传输,java,sockets,real-time,Java,Sockets,Real Time,当我尝试在服务器上使用out.writeobject(lou)时,我得到了一个NullPointerException。客户端抛出一个NotSerializableException。我不知道为什么,因为我正在它上面初始化它。你想打开一个连接,并在整个游戏中保持它打开。这就是我试图做的。我发布的代码是我认为我必须在每个循环中保持连接打开的代码。但是它扔了一些errors@user2054739-我应该猜出哪些错误吗?提示,当试图寻求帮助时,不要从你认为答案是什么开始,从实际问题开始,并包含所有相
out.writeobject(lou)
时,我得到了一个NullPointerException。客户端抛出一个NotSerializableException
。我不知道为什么,因为我正在它上面初始化它。你想打开一个连接,并在整个游戏中保持它打开。这就是我试图做的。我发布的代码是我认为我必须在每个循环中保持连接打开的代码。但是它扔了一些errors@user2054739-我应该猜出哪些错误吗?提示,当试图寻求帮助时,不要从你认为答案是什么开始,从实际问题开始,并包含所有相关细节。@user2054739-根据你包含的一小段代码进行粗略猜测,.reset()中的导致了问题。我建议您在该方法上阅读javadoc,因为它不做您认为它正在做的事情。@user2054739-此外,不要接受异常,它会使您的程序处于中断状态。请更正术语。”“实时”在计算中有着特定的含义,但事实并非如此。你是说“真实世界”吗?还是“及时”?
if(server&&network){
try{
serverSocket = new ServerSocket(12345);
socket = serverSocket.accept();
System.out.println("Connected to " + socket.getInetAddress().getHostName());
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
out.writeObject(lou);
out.flush();
out.reset();
out.writeObject(dud);
out.flush();
out.reset();
me = new Gen(lou, dud);
//socket.close();
//serverSocket.close();
}catch(IOException ioException){
ioException.printStackTrace();
}
}else if(network&&!server){
try{
//Socket socket = new Socket("10.69.18.244", 12345);
socket = new Socket("192.168.1.100", 12345);
//Socket socket = new Socket("10.69.18.162", 12345);
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
lou = (ArrayList)in.readObject();
//in.reset();
dud = (ArrayList)in.readObject();
//in.reset();
me = new Gen(dud, lou);
//socket.close();
}catch(Exception ioException){
ioException.printStackTrace();
}
}