用java的socket写了个c/s的通信程序,实现了文本的收发。
现在要加入一个功能就是服务器从本地读取一个图片,通过socket发送给多个客户端,客户端取得图片,显示。
请问:要服务器端用什么来缓存读取的图片,然后如何发送。PrintWriter可以吗?
客户端如何来读取图片呢?socket貌似只有一个getInputStream方法。
手册上的内容太多了,希望有熟悉这个的高手稍微指点哈,有例子代码最好。赶进度,谢谢啦!
现在要加入一个功能就是服务器从本地读取一个图片,通过socket发送给多个客户端,客户端取得图片,显示。
请问:要服务器端用什么来缓存读取的图片,然后如何发送。PrintWriter可以吗?
客户端如何来读取图片呢?socket貌似只有一个getInputStream方法。
手册上的内容太多了,希望有熟悉这个的高手稍微指点哈,有例子代码最好。赶进度,谢谢啦!
解决方案 »
- java的反编译问题
- JTabbedPane新建标签页
- java 读写txt,写入的时候为甚么我只可以写入一个对象?求正解
- SWT如何实现三级菜单
- javac的版本
- 网络数据流的处理
- 两个标签怎样用连线连接?
- 我写二个模块.一个是用java写的套接字client/server端,和另一个用VC写的套接字client/server端通讯,请问能否可以实现通讯?套接字用berkel
- JBuilder中的汉字问题,请大虾们帮忙!
- 请问:sts点击运行的时候弹出这个框,是为什么?
- 关于Socket接收二进制流的字节数不一致的问题?(急!!!)
- 一个简单的JAVASCRIPT,帮忙!!!!!!!!!!!!!!!!!!
我现在很少写C/S了
都在写B/S
真不好意思
PrintWriter可以把图片送出去。
但是在客户端,不能把getInputStream转为BufferedReader,不知道如何才能把服务器送过来的流还原成图片,omg!
借助一个中间类InputStreamReader
InputStream in=...;
BufferedReader br=new BufferedReader(new InputStreamReader(in));
redduke1202(J2me游戏开发开源项目 http://sf.net/projects/j2me2d) 说的不错,确实转为BufferedReader乐。
但是要怎么还原成图片呢?
通过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){}
大概就这样,参考下
通过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();改了下,仅供参考
多谢!
阿拉独立解决问题的能力还是不照阿!
根据你的代码,已经实现了图片传输和显示了!
好人啦!
谢谢!