(2)使用TCP编写客服端和服务端(上传图片)
此demo的要先启动服务端,否则报错,因为TCP是可靠协议,所以没有对应的服务端时会报错,发送数据为图片
一.编写TCP协议服务端
1 package demo.soket.tcp; 2 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.net.ServerSocket; 7 import java.net.Socket; 8 9 //TCP协议服务端 10 public class Server { 11 public static void main(String[] args) { 12 /** 13 * 1.创建服务端ServerSocket对象 14 * 2.监听socket连接 15 * 3.通过返回的socket对象来获取io流里面的数据 16 * 4.打印数据 17 */ 18 //1. 19 ServerSocket server=null; 20 try { 21 server=new ServerSocket(11000); 22 //2. 23 Socket socket=server.accept(); 24 //3. 25 InputStream in=socket.getInputStream(); 26 FileOutputStream fos=new FileOutputStream("客服端发过来的图片.gif"); 27 byte[] b=new byte[1024]; 28 int len=0; 29 while((len=in.read(b))!=-1) { 30 fos.write(b, 0, len); 31 } 32 //写完之后关闭fos与读in 33 fos.close(); 34 in.close(); 35 } catch (IOException e) { 36 e.printStackTrace(); 37 } 38 } 39 } 40
二.编写TCP协议客服端
1 package demo.soket.tcp; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.OutputStream; 6 import java.net.Socket; 7 import java.net.UnknownHostException; 8 9 /** 10 * TCP特点: 11 * 1.建立连接,形成传输数据的通道 12 * 2.在链接中进行大量数据传输 13 * 3.通过三次握完成连接,是可靠协议,所以没有对应的服务端时会报错 14 * 4.必建立连接,效率会稍低些 15 * @author Administrator 16 * 17 */ 18 public class Client { 19 public static void main(String[] args) { 20 /** 21 * 1.创建一个客服端的socket对象 22 * 2.建立连接 23 * 3.通过io流在管道里面传输数据 24 * 写数据:输出流 getOutputStream() 25 * 接收数据:输入流 getInputStream() 26 * 4.关闭socket 27 */ 28 //1.|2. 29 Socket client=null; 30 try { 31 client=new Socket("192.168.95.2",11000); 32 //3. 33 OutputStream os=client.getOutputStream(); 34 String path="C:\\Users\\Administrator\\Pictures\\Saved Pictures\\demo.gif"; 35 FileInputStream input=new FileInputStream(path); 36 byte[] b=new byte[1024]; 37 int len=0; 38 while((len=input.read(b))!=-1) { 39 os.write(b, 0, len); 40 } 41 //关闭读文件操作 42 input.close(); 43 } catch (UnknownHostException e) { 44 e.printStackTrace(); 45 } catch (IOException e) { 46 e.printStackTrace(); 47 }finally { 48 //4. 49 if(client!=null) { 50 try { 51 client.close(); 52 } catch (IOException e) { 53 e.printStackTrace(); 54 } 55 } 56 } 57 } 58 } 59 60
三 .demo运行
刷新项目后会多一张上传的图片
作者:皓月无边*半步青莲
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。