日期:2014-05-20  浏览次数:20594 次

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

------解决方案--------------------
PrintWriter可以啊....
我现在很少写C/S了
都在写B/S
真不好意思
------解决方案--------------------
InputStream可以转BufferedReader吧
借助一个中间类InputStreamReader
InputStream in=...;
BufferedReader br=new BufferedReader(new InputStreamReader(in));
------解决方案--------------------
你就把它当作一个文件来按字节流读取,
通过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();

改了下,仅供参考