Java--网络编程--UDP&作业练习
- UDP基本介绍:
-
UDP网络编程:
-
![]()
-
package com.model.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.lang.String; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 18:18 * 演示UDP网络编程 发送端 */ public class UDPDemo01 { public static void main(String[] args) throws IOException { //1.定义一个连接对象,并设置发送端的端口号,准备接受和发送数据 DatagramSocket socket = new DatagramSocket(9998); System.out.println("发送端,开始发送数据~"); // 2. 定义一个 封装包对象,将数据封装到包中,指定数据,数据长度,接受端的IP地址,和端口号 byte[] bytes = "明天一起吃火锅啊".getBytes(); DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.56.1"),9999); // 3. 将封装好的包发送出去 socket.send(packet); System.out.println("发送端,发送数据完成~"); System.out.println("---------------发送端等待接收端回复~------------------"); byte[] receive = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(receive, receive.length); socket.receive(receivePacket); byte[] data = receivePacket.getData(); int length = receivePacket.getLength(); System.out.println("接受端回复的消息是:"+new String(data, 0, length)); System.out.println("发送端接受完成~"); // 4.关闭资源 socket.close(); } }
-
package com.model.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 18:18 * 演示UDP网络编程的实现,接收端 */ public class UDPDemo02 { public static void main(String[] args) throws IOException { // 1. 定义连接对象 socket DatagramSocket socket = new DatagramSocket(9999); //2.定义一个接受数据包的对象,并设置大小 byte[] buff = new byte[1024]; DatagramPacket packet = new DatagramPacket(buff, buff.length); System.out.println("接收端,等待接受数据~"); // 3. 监听9999端口号,当有发送端 向9999端口号,发送数据时,程序会将数据接受到packet中, // 若没有发送端发送,则会一直等待 socket.receive(packet); // 4.接受数据后,对数据包进行拆解 byte[] data = packet.getData(); int length = packet.getLength(); System.out.println("发送端发送的数据是:"+new String(data,0,length)); System.out.println("接收端,接收数据完成~"); // 发送端回复一条消息 System.out.println("-------------接受端开始回复发送端消息~----------------"); byte[] bytes = "好的,明天一起去!".getBytes(); DatagramPacket sendPacket = new DatagramPacket(buff, bytes.length, InetAddress.getByName("192.168.56.1"),9998); socket.send(sendPacket); System.out.println("接受端回复消息完成~"); // 5。关闭资源 socket.close(); } }
-
-
网络编程作业1:
-
![]()
-
package com.model.homwork; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 19:52 * 网络编程作业1--服务端 */ public class HomeWorkDemo01 { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务端,等待连接~"); Socket socket = serverSocket.accept(); System.out.println("服务端连接成功~"); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line = reader.readLine(); System.out.println("服务端接收的问题是:" + line); System.out.println("服务端回复问题~"); char[] buff = null; if ("name".equals(line)) { buff = "我是nova".toCharArray(); } else if ("hobby".equals(line)) { buff = "编写Java程序".toCharArray(); } else { buff = "你说啥呢".toCharArray(); } System.out.println("服务端回复问题完成~"); writer.write(buff); writer.newLine(); writer.flush(); reader.close(); writer.close(); socket.close(); serverSocket.close(); } }
-
package com.model.homwork; import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 19:52 * 网络编程作业1--客户端 */ public class HomeWorkDemo02 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(), 8888); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println("请数据问题:"); Scanner scanner = new Scanner(System.in); String next = scanner.next(); writer.write(next.toCharArray()); writer.newLine(); writer.flush(); String line = reader.readLine(); System.out.println("服务端回复的问题是:" + line); reader.close(); writer.close(); socket.close(); } }
-
-
网络编程作业2:
-
![]()
-
package com.model.homwork; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.nio.charset.StandardCharsets; import java.util.Scanner; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 20:39 * UDP编程实现--发送端 */ public class HomeWorkDemo03 { public static void main(String[] args) throws IOException { DatagramSocket socket = new DatagramSocket(8889); Scanner scanner = new Scanner(System.in); System.out.println("发送端,输入你的问题:"); String next = scanner.next(); byte[] nextBytes = next.getBytes(); DatagramPacket packet = new DatagramPacket(nextBytes, nextBytes.length,InetAddress.getLocalHost(),8888); socket.send(packet); System.out.println("等代服务端回复消息~"); byte[] bytes = new byte[1024]; DatagramPacket receivePacket = new DatagramPacket(bytes, bytes.length); socket.receive(receivePacket); byte[] data = receivePacket.getData(); int length = receivePacket.getLength(); System.out.println("接收端回复的消息是:"+new String(data, 0, length)); socket.close(); } }
-
package com.model.homwork; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 20:39 * UDP编程实现--接收端 */ public class HomeWorkDemo04 { public static void main(String[] args) throws IOException { DatagramSocket socket = new DatagramSocket(8888); System.out.println("接收端,等待发送端的问题~"); byte[] bytes=new byte[1024]; char[] chars=new char[1024]; DatagramPacket packet = new DatagramPacket(bytes, bytes.length); socket.receive(packet); byte[] data = packet.getData(); int length = packet.getLength(); String s = new String(data, 0, length); System.out.println("发送端的问题是:"+s); byte[] buff=null; if (s.equals("四大名著有哪些")){ buff="红楼梦,三国演义,水浒传,西游记".getBytes(); }else { buff="what".getBytes(); } DatagramPacket sendPacket = new DatagramPacket(buff, buff.length, InetAddress.getLocalHost(),8889); socket.send(sendPacket); System.out.println("回答完毕~"); socket.close(); } }
-
-
网络编程作业3:TCP文件下载:
-
![]()
-
package com.model.homwork; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 21:11 * 网络编程作业3--实现TCP文件下载--服务端 * 使用包装流要进行flush()操作,且进行的flush()操作要在输入结束标志后面(socket.shutdownOutput()和 newLine()) * 只有字符型的包装流才能使用 newLine()当做是输入的结束标志,且只能有readLine()进行读取 */ public class HomeWorkDemo05 { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("服务端开始监听~"); Socket socket = serverSocket.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = reader.readLine(); System.out.println("客户端要下载的文件是:"+line); String fileName=""; if (line.equals("a.jpg")){ fileName="D:\\qq\\IDEA\\IdeaProjects\\mianshi_project\\Java_project\\Java_wangluobiancheng\\" + "src\\main\\resources\\file\\a.jpg"; }else { fileName="D:\\qq\\IDEA\\IdeaProjects\\mianshi_project\\Java_project\\Java_wangluobiancheng\\" + "src\\main\\resources\\file\\b.jpg"; } FileInputStream fileInputStream = new FileInputStream(fileName); ByteArrayOutputStream stream = new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int readLine=0; while ((readLine=fileInputStream.read(buff))!=-1){ stream.write(buff, 0, readLine); } BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream()); bufferedOutputStream.write(stream.toByteArray()); socket.shutdownOutput();//先做写入结束标志,在进行flush()刷新, bufferedOutputStream.flush(); System.out.println("文件上传成功~"); bufferedOutputStream.close(); stream.close(); fileInputStream.close(); reader.close(); socket.close(); serverSocket.close(); } }
-
package com.model.homwork; import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.util.Scanner; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/24 21:11 * 网络编程作业3--实现TCP文件下载--客户端 */ public class HomeWorkDemo06 { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),8888); System.out.println("客户端连接成功~"); Scanner scanner = new Scanner(System.in); System.out.println("输入你要下载的文件名:"); String next = scanner.next(); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); writer.write(next); writer.newLine();//先做newLine()结束标志,在仅从flush()刷新 writer.flush(); System.out.println("客户端等待服务端的下载~"); BufferedInputStream inputStream = new BufferedInputStream(socket.getInputStream()); ByteArrayOutputStream stream=new ByteArrayOutputStream(); byte[] buff=new byte[1024]; int readLine=0; while ((readLine=inputStream.read(buff))!=-1){ stream.write(buff, 0, readLine); } String fileName="D:\\qq\\IDEA\\IdeaProjects\\mianshi_project\\Java_project\\Java_wangluobiancheng\\" + "src\\main\\resources\\file\\c.jpg"; FileOutputStream fileOutputStream = new FileOutputStream(fileName); fileOutputStream.write(stream.toByteArray()); System.out.println("文件下载成功~"); fileOutputStream.close(); stream.close(); inputStream.close(); writer.close(); scanner.close(); socket.close(); } }
-








浙公网安备 33010602011771号