1. TCP协议上传图片并给出反馈:
(1)客户端:
1 package cn.itcast_13; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.net.Socket; 9 10 public class UploadClient { 11 public static void main(String[] args) throws IOException { 12 // 创建客户端Socket对象 13 Socket s = new Socket("192.168.12.92", 19191); 14 15 // 封装图片文件 16 BufferedInputStream bis = new BufferedInputStream(new FileInputStream( 17 "林青霞.jpg")); 18 // 封装通道内的流 19 BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream()); 20 21 byte[] bys = new byte[1024]; 22 int len = 0; 23 while ((len = bis.read(bys)) != -1) { 24 bos.write(bys, 0, len); 25 bos.flush(); 26 } 27 28 s.shutdownOutput(); 29 30 // 读取反馈 31 InputStream is = s.getInputStream(); 32 byte[] bys2 = new byte[1024]; 33 int len2 = is.read(bys2); 34 String client = new String(bys2, 0, len2); 35 System.out.println(client); 36 37 // 释放资源 38 bis.close(); 39 s.close(); 40 } 41 }
(2)服务端:
1 package cn.itcast_13; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.OutputStream; 8 import java.net.ServerSocket; 9 import java.net.Socket; 10 11 public class UploadServer { 12 public static void main(String[] args) throws IOException { 13 // 创建服务器Socket对象 14 ServerSocket ss = new ServerSocket(19191); 15 16 // 监听客户端连接 17 Socket s = ss.accept(); 18 19 // 封装通道内流 20 BufferedInputStream bis = new BufferedInputStream(s.getInputStream()); 21 // 封装图片文件 22 BufferedOutputStream bos = new BufferedOutputStream( 23 new FileOutputStream("mn.jpg")); 24 25 byte[] bys = new byte[1024]; 26 int len = 0; 27 while ((len = bis.read(bys)) != -1) { 28 bos.write(bys, 0, len); 29 bos.flush(); 30 } 31 32 // 给一个反馈 33 OutputStream os = s.getOutputStream(); 34 os.write("图片上传成功".getBytes()); 35 36 bos.close(); 37 s.close(); 38 } 39 }