Topic: 关于IO和SOCket的问题 |
Print this page |
1.关于IO和SOCket的问题 | Copy to clipboard |
Posted by: aikun Posted on: 2004-04-28 17:54 我在用io当中的ObjectoutStream的 writerObject(a) 只有当我是字符串的时候 在客户端可以接受到,当它是一个image的时候就不行了,发出错是 java.io.NotSerializableException: java.awt.image.BufferedImage at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278) at service.run(tcpServer.java:40) at java.lang.Thread.run(Thread.java:536) 这是一个运行时的错误 我一直不清楚,writeObject();当中的参数只要是对象应该都 可以的吧,可是为什么 是Image类型的就不行呢,请各位高手快点帮帮我了 下边是代码 请各位小弟我看看了 这个是服务器端的 import java.net.*; import java.io.*; import java.awt.image.BufferedImage; public class tcpServer { public static void main(String args[]) { try { ServerSocket ss=new ServerSocket(8001); while(true) { Socket s=ss.accept(); new Thread(new service(s)).start(); } } catch(Exception e) {System.out.println(e.getMessage());} } } class service implements Runnable { Socket s; public service(Socket s) { this.s=s; } public void run() { try { InputStream ips =s.getInputStream(); OutputStream ops=s.getOutputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(ips)); ObjectOutputStream oos=new ObjectOutputStream(ops); System.out.println("我们是好朋友"); BufferedImage image=new image().getImage(); oos.writeObject(image); br.close(); oos.close(); s.close(); } catch(Exception e) { e.printStackTrace(); } } } 下边这个是客户端的 import java.io.*; import java.net.*; import java.awt.image.BufferedImage; import javax.imageio.*; public class tcpClient { static BufferedImage image; public static void main(String[] args) { try { if (args.length<2) { System.out.println("请您输入 server 的端IP和端口号"); return; } Socket s=new Socket (InetAddress.getByName(args[0]),Integer.parseInt(args[1])); InputStream ips=s.getInputStream(); OutputStream ops=s.getOutputStream(); DataOutputStream dos=new DataOutputStream(ops); ObjectInputStream ois=new ObjectInputStream(ips); dos.writeBytes("1"); //image=(BufferedImage)ois.readObject(); String a=ois.readObject().toString(); //File f=new File(".","a.jpg"); //ImageIO.write(image,"jpg", f); System.out.println(a); }catch(Exception e){} } } 这个是取得图片的类 import java.awt.image.BufferedImage; import java.awt.*; public class image { Dimension d=Toolkit.getDefaultToolkit().getScreenSize(); BufferedImage screenshot; public BufferedImage getImage(){ try { screenshot = (new Robot()).createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())); }catch(AWTException e){System.out.println(e.getMessage());} return screenshot; } } |
2.Re:关于IO和SOCket的问题 [Re: aikun] | Copy to clipboard |
Posted by: huangjiacai Posted on: 2004-05-04 12:44 不好意思 没仔细看代码 我想用串行化之后可以的,我做过的 你先串行化先试试了 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |