我有一些课程:客户端,服务器和后台正在使用Player类。我真的不明白为什么带ObjectInputStream
/的Client类ObjectOutputStream
无法正常工作。
我在做什么不好?我的错在哪里
package Shooter2Dv27082013;
public class Player implements Serializable{
....
public int x=10;
public int y=10;
.... }
package Shooter2Dv27082013;
public class Background extends JPanel implements ActionListener, Serializable {
public int countCollisions=0;
private int time = 20; // 0.02s
Timer mainTimer = new Timer(time, this);
....
Player p = new Player(); ... }
现在客户端类:
package Shooter2Dv27082013;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] ar) {
JFrame frame = new JFrame("D2 Shooter");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(1000, 520);
Background bg = new Background();
frame.add(bg);
frame.setResizable(false);
frame.setVisible(true);
int serverPort = 6666;
String address = "127.0.0.1"; /
Player p = new Player();
try {
InetAddress ipAddress = InetAddress.getByName(address);
System.out.println("Any of you heard of a socket with IP address " + address + " and port " + serverPort + "?");
Socket socket = new Socket(ipAddress, serverPort);
System.out.println("Yes! I just got hold of the program.");
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
ObjectInputStream ois = new ObjectInputStream(sin);
ObjectOutputStream oos = new ObjectOutputStream(sout);
System.out.println("Streams are created. Let's try send these objects");
System.out.println();
System.out.println("P.x : "+bg.p.x);
while (true) {
oos.writeObject(bg.p);
oos.flush();
oos.close();
System.out.println("Player X: " + bg.p.x + " Player Y: " + bg.p.y);
p = (Player) ois.readObject();
ois.close();
System.out.println("New X: " + p.x + "New Y: "+p.y);
System.out.println("Looks like the server is pleased with us. Go ahead and enter more lines.");
System.out.println();
}
} catch (Exception x) {
x.printStackTrace();
}
}
}
它不会将Object发送到Server类,但也不会对错误进行任何说明。
服务器类:
package Shooter2Dv27082013;
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] ar) {
int port = 6666;
try {
ServerSocket ss = new ServerSocket(port);
System.out.println("Waiting for a client...");
Socket socket = ss.accept();
System.out.println("Got a client :) ... Finally, someone saw me through all the cover!");
System.out.println();
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
ObjectInputStream ois = new ObjectInputStream(sin);
ObjectOutputStream oos = new ObjectOutputStream(sout);
Player p = new Player();
while(true) {
p = (Player) ois.readObject();
System.out.println("The client just sent me this x: "+p.x+" y: "+p.y);
p.x=555; p.y=600;
System.out.println("I change it and now I'm sending it back...");
oos.writeObject(p);
oos.flush();
oos.close();
System.out.println("Waiting for the next line...");
System.out.println();
}
} catch(Exception x) { x.printStackTrace(); }
}
}
您正在循环关闭流。关闭流或任何资源后,您将无法使用它。
问题内容: 我正在编程一个类以与服务器进行通信,但是当它尝试在inputstream的帮助下构造ObjectInputStream时,程序将冻结。没有异常,程序仍在运行,但挂在试图构造ObjectInputstream的行中。 这是我的问题所在的方法的代码: 这是整个类的代码: 在查看Google时,我发现了这一点:http : //www.coderanch.com/t/232944/threa
我使用了绝对定位(setBounds和null布局),现在开始练习布局管理器,这段代码是用gridbag布局的,但是很少组件没有显示,或者是单元格有一些问题,或者是其他的东西,请帮助!
我试图创建一个基于警报的应用程序。我正在使用。问题是这一点都不可靠。在某些设备中,它起作用…在其他设备中,它的工作方式…而在其他设备中,它根本不起作用。 这是我的闹钟课: 这是我的OneTimeAlarm,只发射一次就不再发射的警报。 这是我的日常警报器,警报器一天只响一次。
我正在使用ora2pg将我的数据从oracle迁移到postgres数据库。作为第一步,我要导出模式。我发现生成的sql文件有许多错误,如重复的sql语句,函数中的重复参数,这些错误在执行sql时失败。我正在尝试手动更正生成的sql文件中的这些错误。是否有更好的方法或避免sql文件中的此错误。实际上,我只需要将数据从oracle传输到postgres数据库。但不知道这是否可能。我使用的是ORA2P
我正试图通过api创建一个新任务。 电话是: Curl-umy_token:https://app.asana.com/api/1.0/tasks-d"name=demo_task"-d"workspace=875236917006" 以下是回应: {“错误”:[{“消息”:“工作区:类型不正确”}]} 我哪里错了?
我已经设置了一个骆驼路由,错误处理程序和重新交付策略配置如下 我期待以下结果 消息 1 - 在第一次失败时,当我收到来自系统的异常时,处理程序按以下顺序启动 第一次重试 - 30 秒 第二次重试 - 1 分钟 第三次重试 - 1 分钟 ... 第 6 次重试 - 1 分钟 请告知我在这里做错了什么。