A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 为梦想而活着 中级黑马   /  2014-8-13 10:15  /  1393 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 为梦想而活着 于 2014-8-13 11:41 编辑

TCP上传图片时,请问为什么编译都没有错误而上传的图片却因为过大windows查看不了呢??


客户端:
  1. /*客户端:
  2. 1.建立服务端点
  3. 2.读取客户端已有的图片数据
  4. 3.通过socket的输出流将数据发给服务端。
  5. 4.读取服务端反馈信息。
  6. 5.关闭。*/
  7. package TCP;
  8. import java.io.*;
  9. import java.net.*;
  10. public class PicClient {
  11.         public static void main(String[] args) throws Exception{
  12.                 //建立socket服务
  13.                 Socket s=new Socket("127.0.0.1", 10007);
  14.                
  15.                 //读取数据-->字节流
  16.                 FileInputStream fis=new FileInputStream("1.jpg");
  17.                 //输出数据-->获取socket输出流向服务端写数据
  18.                 OutputStream out=s.getOutputStream();
  19.                 byte []buf=new byte[1024];//定义缓冲区
  20.                 int len=0; //字节长度
  21.                 while((len=fis.read())!=-1){
  22.                         out.write(buf, 0, len);
  23.                 }
  24.                 s.shutdownOutput(); //告诉服务端已写完数据

  25.                
  26.                 //接受服务器发送的反馈信息
  27.                 InputStream in=s.getInputStream();
  28.                 byte[]bufin=new byte[1024];
  29.                 int inLen=in.read(buf);
  30.                 System.out.println("From Server:"+new String(buf, 0, inLen));
  31.                
  32.                
  33.                 //关闭资源
  34.                 fis.close();
  35.                 s.close();

  36.         }
  37. }
复制代码
服务端:
  1. package TCP;
  2. import java.io.*;
  3. import java.net.*;
  4. public class PicServer {
  5.         public static void main(String[] args) throws Exception{
  6.                 ServerSocket ss=new ServerSocket(10007);
  7.                
  8.                 while(true){
  9.                         Socket s=ss.accept();
  10.                         new Thread(new PicThread(s)).start();
  11.                 }
  12.                
  13.         }
  14. }
  15. class PicThread implements Runnable{
  16.         private Socket s;
  17.         
  18.         public PicThread(Socket s) {
  19.                 this.s=s;
  20.         }
  21.         
  22.         @Override
  23.         public void run() {
  24.                 String ip=s.getInetAddress().getHostAddress();
  25.                 InputStream in;
  26.                 try {
  27.                         in = s.getInputStream();
  28.                         
  29.                 FileOutputStream fos=new FileOutputStream("server.jpg");
  30.                 byte[]buf=new byte[1024];
  31.                 int len=0;
  32.                 //又在这犯错误了!要记得将buf传进去,不然输出的肯定是空
  33.                 while((len=in.read(buf))!=-1){
  34.                         fos.write(buf, 0, len);
  35.                 }
  36.                
  37.                 //向客户端发送消息(socket输出流)
  38.                 OutputStream out=s.getOutputStream();
  39.                 out.write("图片上传成功!".getBytes());
  40.                
  41.                 //关闭资源
  42.                 fos.close();
  43.                 s.close();
  44.                
  45.                 } catch (Exception e) {
  46.                         throw new RuntimeException(ip+"上传失败!");
  47.                 }
  48.                
  49.                
  50.         }
  51. }
复制代码
程序可以正常运行,只是写入目的的图片无法打开!纠结中·········


3 个回复

倒序浏览
应该是没问题的!
回复 使用道具 举报
找到问题了!客服端中没有将buf数组传进去···悲剧啊···
回复 使用道具 举报
没法上传图片啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马