黑马程序员技术交流社区

标题: 网络编程知识代码练习 [打印本页]

作者: cloud1991    时间: 2015-9-24 10:25
标题: 网络编程知识代码练习
本帖最后由 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. }
复制代码




作者: jiaweizhang    时间: 2015-9-24 10:34
收藏了,谢谢分享
作者: 生存追求    时间: 2015-9-24 11:07
总结的很好!
作者: heshiwei    时间: 2015-9-24 12:41
Socket编程无非就是字节流 流来流去。掌握这个规律,就很简单了。
作者: 冰霜之卅    时间: 2015-9-24 15:57
回顾下基本流程
1 建立 Socket
2. 建立读取流 BufferedReader 读取本地信息
3. 建立读取流 读取 网络信息   Socket.getInputStream
4.输出信息流  PrintaWriter





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2