二.四.二 客户端
@Test public void send4Test() throws Exception{ //1. 定义客户端 System.out.println("------------发送方开始发送图片文件数据--------------"); DatagramSocket datagramSocket=new DatagramSocket(6666); //2. 准备数据 //3. 将数据转换成字节数据 String path="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"129.png"; byte[] bytes= IOUtils.fileToByteArray(path); // System.out.println("发送数据为:"+new String(bytes)); //4. 封装进包 InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999); DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress); datagramSocket.send(datagramPacket); //关闭流 datagramSocket.close(); }
二.四.三 服务器端
@Test public void send4Test() throws Exception{ //1. 定义服务器 System.out.println("---------------服务器启动成功,接收图片文件数据----------------"); DatagramSocket datagramSocket=new DatagramSocket(9999); //2. 设置数据 byte[] bytes=new byte[1024*20]; //能接收的大小,并不是实际接收的大小 DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length); //3. 阻塞式接收传递过来的数据 datagramSocket.receive(datagramPacket); //4. 获取接收的数据 byte[] content=datagramPacket.getData(); int len=datagramPacket.getLength(); String path="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"129Udp.png"; IOUtils.byteArrayToFile(content,path); //5 关闭流 datagramSocket.close(); }
二.四.四 运行程序
运行服务器端, 后运行客户端, 查看文件系统
二.五 控制台输入单条数据
二.五.一 客户端
public static void main(String[] args) { try { send5Test(); //send6Test(); } catch (Exception e) { e.printStackTrace(); } } public static void send5Test() throws Exception{ //1. 定义客户端 System.out.println("------------发送方开始发送控制台打印数据--------------"); DatagramSocket datagramSocket=new DatagramSocket(6666); //2. 准备数据 BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in)); String content=bufferedReader.readLine(); byte[] bytes=content.getBytes("UTF-8"); // System.out.println("发送数据为:"+new String(bytes)); //4. 封装进包 InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999); DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress); datagramSocket.send(datagramPacket); //关闭流 datagramSocket.close(); }
二.五.二 服务器端
@Test public void send5Test() throws Exception{ //1. 定义服务器 System.out.println("---------------服务器启动成功,接收控制台数据----------------"); DatagramSocket datagramSocket=new DatagramSocket(9999); //2. 设置数据 byte[] bytes=new byte[1024]; //能接收的大小,并不是实际接收的大小 DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length); //3. 阻塞式接收传递过来的数据 datagramSocket.receive(datagramPacket); //4. 获取接收的数据 byte[] content=datagramPacket.getData(); int len=datagramPacket.getLength(); System.out.println("接收的内容是:"+new String(content,0,len)); datagramSocket.close(); }
二.五.三 运行程序
先运行服务器端,
运行客户端,输入要打印的数据
再次查看服务器端
二.六 控制台输入多条数据
需要用 循环进行创建。
二.六.一 客户端
public static void send6Test() throws Exception{ //1. 定义客户端 System.out.println("------------发送方开始发送控制台多条数据--------------"); DatagramSocket datagramSocket=new DatagramSocket(6666); //2. 准备数据 BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in)); while(true){ String content=bufferedReader.readLine(); byte[] bytes=content.getBytes("UTF-8"); // System.out.println("发送数据为:"+new String(bytes)); //4. 封装进包 InetSocketAddress inetSocketAddress=new InetSocketAddress("localhost",9999); DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length,inetSocketAddress); datagramSocket.send(datagramPacket); if("bye".equalsIgnoreCase(content)||"quit".equalsIgnoreCase(content)){ System.out.println("退出程序"); break; } } //关闭流 datagramSocket.close(); }
二.六.二 服务器端
@Test public void send6Test() throws Exception{ //1. 定义服务器 System.out.println("---------------服务器启动成功,接收控制台多条数据----------------"); DatagramSocket datagramSocket=new DatagramSocket(9999); //2. 设置数据 byte[] bytes=new byte[1024]; while(true){ //能接收的大小,并不是实际接收的大小 DatagramPacket datagramPacket=new DatagramPacket(bytes,0,bytes.length); //3. 阻塞式接收传递过来的数据 datagramSocket.receive(datagramPacket); //4. 获取接收的数据 byte[] content=datagramPacket.getData(); int len=datagramPacket.getLength(); String temp=new String(content,0,len); if("bye".equalsIgnoreCase(temp)||"quit".equalsIgnoreCase(temp)){ break; } System.out.println("echo:"+temp); } datagramSocket.close(); }
二.六.三 运行程序
运行服务器,再运行客户端
服务器端
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!