实服务器和客户端的通信并不难,个人觉得难的是流的操作,不同的流的方法不同,而且数据流依赖于基础流,这让我在操作时候遇到了不少问题。
言归正传,上图是我晒的在做这个网络画板时的基本思路。一共三个类,各司其职。
我遇到的最大问题是在服务器画的线客户端收不到。然后发现自己出了n+个问题,下面是我点击发送按钮的监听器代码,实现了将服务器中队列里面的线的数据写到流里面去:
public void actionPerformed(ActionEvent e) {
//实现发送按钮
String cmd = e.getActionCommand();
if(cmd.equals("send")){
try {
for(int i = 0;i<list.size();i++){
dos.writeInt(list.get(i).getX1());
dos.flush();
dos.writeInt(list.get(i).getY1());
dos.flush();
dos.writeInt(list.get(i).getX2());
dos.flush();
dos.writeInt(list.get(i).getY2());
dos.flush();
System.out.println(i+"执行"+list.get(i).getX1());
//System.out.println("执行");
}
//ous.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(list.size());
}
}
};
PS:用的是数据流
ins = client.getInputStream();
dns = new java.io.DataInputStream(ins);
这里是客户端获取数据流时的代码,要记住格式~我一开始就是只获取了一个InputStream,出错了。所以这里的格式要记住。数据流是通过基础流得到的。