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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cloud1991 中级黑马   /  2015-9-24 10:25  /  414 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cloud1991 于 2015-9-24 10:32 编辑


利用TCP协议上传文件到服务器:
  1. //客服端
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedOutputStream;
  4. import java.io.FileInputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.Socket;

  8. public class ClientDemo {
  9.         public static void main(String[] args) throws IOException {
  10.                 Socket s = new Socket("10.164.22.254", 48264);

  11.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
  12.                                 "a.txt"));

  13.                 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());

  14.                 byte[] bys = new byte[1024];
  15.                 int len = 0;
  16.                 while ((len = bis.read(bys)) != -1) {
  17.                         bos.write(bys, 0, len);
  18.                         // 需要刷新,不然数据写不进去
  19.                         bos.flush();
  20.                 }

  21.                 // 通知服务器已经完成了传输
  22.                 s.shutdownOutput();

  23.                 InputStream bis2 = s.getInputStream();
  24.                 byte[] bys2 = new byte[1024];
  25.                 int len2 = bis2.read(bys2);
  26.                 String str = new String(bys2, 0, len2);
  27.                 System.out.println(str);

  28.                 bis.close();
  29.                 s.close();
  30.         }
  31. }
  32. //f服务器端
  33. import java.io.BufferedInputStream;
  34. import java.io.BufferedOutputStream;
  35. import java.io.FileOutputStream;
  36. import java.io.IOException;
  37. import java.io.OutputStream;
  38. import java.net.ServerSocket;
  39. import java.net.Socket;

  40. public class ServerDemo {
  41.         public static void main(String[] args) throws IOException {
  42.                 ServerSocket ss = new ServerSocket(48264);

  43.                 Socket s = ss.accept();

  44.                 BufferedOutputStream bos = new BufferedOutputStream(
  45.                                 new FileOutputStream("Copy.txt"));

  46.                 BufferedInputStream bis = new BufferedInputStream(s.getInputStream());

  47.                 byte[] bys = new byte[1024];

  48.                 int len = 0;
  49.                 while ((len = bis.read(bys)) != -1) {
  50.                         bos.write(bys, 0, len);
  51.                 }

  52.                 OutputStream bos2 = s.getOutputStream();
  53.                 bos2.write("上传成功".getBytes());

  54.                 s.close();
  55.                 bos.close();

  56.         }
  57. }
复制代码



4 个回复

正序浏览
回顾下基本流程
1 建立 Socket
2. 建立读取流 BufferedReader 读取本地信息
3. 建立读取流 读取 网络信息   Socket.getInputStream
4.输出信息流  PrintaWriter
回复 使用道具 举报
Socket编程无非就是字节流 流来流去。掌握这个规律,就很简单了。
回复 使用道具 举报
总结的很好!
回复 使用道具 举报
收藏了,谢谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马