用java的socket写了个c/s的通信程序,实现了文本的收发。
现在要加入一个功能就是服务器从本地读取一个图片,通过socket发送给多个客户端,客户端取得图片,显示。
请问:要服务器端用什么来缓存读取的图片,然后如何发送。PrintWriter可以吗?
客户端如何来读取图片呢?socket貌似只有一个getInputStream方法。
手册上的内容太多了,希望有熟悉这个的高手稍微指点哈,有例子代码最好。赶进度,谢谢啦!

解决方案 »

  1.   

    PrintWriter可以啊....
    我现在很少写C/S了
    都在写B/S
    真不好意思
      

  2.   

    赫赫,谢谢啦。
    PrintWriter可以把图片送出去。
    但是在客户端,不能把getInputStream转为BufferedReader,不知道如何才能把服务器送过来的流还原成图片,omg!
      

  3.   

    InputStream可以转BufferedReader吧
    借助一个中间类InputStreamReader
    InputStream in=...;
    BufferedReader br=new BufferedReader(new InputStreamReader(in));
      

  4.   

    嗯,http://message.csdn.net/SendMessage.aspx?To=redduke1202
    redduke1202(J2me游戏开发开源项目 http://sf.net/projects/j2me2d) 说的不错,确实转为BufferedReader乐。
    但是要怎么还原成图片呢?
      

  5.   

    你就把它当作一个文件来按字节流读取,
    通过Socket 发送就是了,发送完毕,客户端再显示出来try
    {
    File file = new File("\\图片");
    BufferedInputStream bin = new BufferedInputStream(new FlieInputStream(file);
    byte data[] = new byte[file.length());
    bin.read(data,0,data.length);
    BufferedOutputStream bout = new BufferedOutputStream(mySocket.getOutputStream());
    bout.write(data,0,data.length);
    bout.flush();
    bin.colse();
    bout.close();
    }catch(Exception e){}
    大概就这样,参考下
      

  6.   

    omg, 代码,我看看,多谢!
      

  7.   

    你就把它当作一个文件来按字节流读取,
    通过Socket 发送就是了,发送完毕,客户端再显示出来try
    {
    File file = new File("\\图片");
    BufferedInputStream bin = new BufferedInputStream(new FlieInputStream(file);
    byte data[] = new byte[file.length());
    bin.read(data,0,data.length);
    DataOutputStream dout = new DataOutputStream(mySocket.getOutputStream());
    dout.writeLong(file.length()); //通知客户端
    dout.writeUTF(file.getName());
    dout.write(data,0,data.length);
    bin.colse();
    bout.close();
    }catch(Exception e){}//客户端   DataInputStream din= new DataInputStream(Socket.getInputStream());
       long fileLen = din.readLong();
       String fileName = din.readUTF();
       byte data[] = new byte[fileLen];
       din.read(data,0,fileLen);
    BufferedOutputStream bout = new BufferedOutputStream(new FileInputStream(fileName));
      bout.write(data,0,fileLen);
     bout.flush();
      din.close();
      bout.close();改了下,仅供参考
      

  8.   

    OMG!
    多谢!
    阿拉独立解决问题的能力还是不照阿!
    根据你的代码,已经实现了图片传输和显示了!
    好人啦!
    谢谢!