Java 第九章 网络编程(2)

server/2025/2/22 12:48:28/

目录

网络编程

TCP编程

实例(发送文件)

UDP编程

理解

流 程:

发送端

接收端


网络编程


TCP编程

实例(发送文件)

java">public class Client {public static void main(String[] args) {// 在客户端输入一个文件try {FileInputStream inputStream = new FileInputStream("E:/A.png");Socket socket = new Socket("127.0.0.1",9999);OutputStream outputStream = socket.getOutputStream();byte[] bytes = new  byte[1024];int length=0;while ((length=inputStream.read(bytes))!=-1 ){outputStream.write(bytes, 0,length);}socket.shutdownOutput();//发送文件时,需要调用,表示发送完成//接收服务器返回的消息DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());System.out.println(dataInputStream.readUTF());} catch (FileNotFoundException e) {System.out.println("文件找不到");} catch (UnknownHostException e) {System.out.println("IP不正确");} catch (IOException e) {System.out.println("网络忙,请稍后再试");}}
}public class Sever {public static void main(String[] args) {try {ServerSocket sever = new ServerSocket(9999);System.out.println("服务器启动");Socket socket = sever.accept();System.out.println("客户端链接成功");FileOutputStream outputStream= new FileOutputStream("E:/a.png");InputStream inputStream = socket.getInputStream();byte []bytes = new byte[100];int length= 0;while ((length = inputStream.read(bytes))!=-1){outputStream.write(bytes,0,length);}DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());dataOutputStream.writeUTF("接收成功 ");} catch (IOException e) {System.out.println();}}
}

UDP编程

理解

  • 类 DatagramSocket 和 DatagramPacket 实现了基于 UDP 协议网络程序。
  • UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证UDP 数据报一定能够安全送到目的地,也不能确定什么时候可以抵达。
  •  DatagramPacket 对象封装了UDP数据报,在数据报中包含了发送端的IP地址 和端口号以及接收端的IP地址和端口号。
  • UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方 的连接

流 程:

  1. DatagramSocket与DatagramPacket
  2. 建立发送端,接收端
  3.  建立数据报
  4.  调用Socket的发送、接收方法
  5. 关闭Socket
  6. 发送端与接收端是两个独立的运行程序
发送端
  • DatagramSocket ds = new DatagramSocket();
  • byte[] by = “hello,baidu.com”.getBytes();
  • DatagramPacket dp = new DatagramPacket(by,0,by.length,InetAddress.getByName(“127.0.0.1”),10000);
  • ds.send(dp);
  • ds.close();
java">public class Send {public static void main(String[] args) {try {DatagramSocket datagramSocket = new DatagramSocket();byte []bytes="你好".getBytes();while (true) {//创建数据包对象DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("127.0.0.1"), 9999);datagramSocket.send(datagramPacket);}} catch (SocketException e) {System.out.println("404");e.getMessage();} catch (UnknownHostException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}
}
接收端

(要指定监听的端口)

  • DatagramSocket ds = new DatagramSocket(10000);
  • byte[] by = new byte[1024];
  • DatagramPacket dp = new DatagramPacket(by,by.length);
  • ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength());
  • System.out.println(str+"--"+dp.getAddress()); ds.close()
java">public class Receive {public static void main(String[] args) throws IOException {DatagramSocket datagramSocket = new DatagramSocket(9999);byte[] bytes = new byte[100];while (true){DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);datagramSocket.receive(datagramPacket);//接收数据到数据包String s = new String(bytes,0,datagramPacket.getLength());System.out.println(s);}}
}

http://www.ppmy.cn/server/169843.html

相关文章

爱普生 SG-8101CE 可编程晶振在笔记本电脑的应用

在笔记本电脑的精密架构中,每一个微小的元件都如同精密仪器中的齿轮,虽小却对整体性能起着关键作用。如今的笔记本电脑早已不再局限于简单的办公用途,其功能愈发丰富多样。从日常轻松的文字处理、网页浏览,到专业领域中对图形处理…

链表-基础训练(二) day14

两两交换链表中的节点 题目示意: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 原先我的思路是图像上的思路,但是我感觉还是很复杂…

西安电子科技大学计算机科学与技术学院考研复试笔试、机试分数情况

01、计算机科学与技术学院各个方向 02、24计算机科学与技术学院近三年复试分数线对比 PS:计科院24年院线相对于23年院线普遍持平,但是计算机科学与技术学硕上涨30分,主要是由于国家政策对专硕影响,导致专硕录取人数持续上升&#…

新数据结构(11)——Java类的产生和反射

反射是获取类信息的一种能力 类信息包括属性、方法、构造器、父类、接口等 类信息的来源 来自类的加载器,这是从.class文件到内存中的java虚拟器(JVM)中间的一个阶段(如下图) 类的加载器里,用Field数组存…

Linux、Docker、Redis常见面试题

1. Linux 什么是Linux? Linux是一种基于UNIX的操作系统,最初是由Linus Torvalds引入的。它基于Linux内核,可以运行在由Intel,MIPS,HP,IBM,SPARC和Motorola制造的不同硬件平台上。Linux中另一个…

java毕业设计之医院门诊挂号系统(源码+文档)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的医院门诊挂号系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 医院门诊挂号系统的主要使用者…

DeepSeek 提示词:定义、作用、分类与设计原则

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

【Spring中事务的传播行为有哪些?】

在 Spring 框架里,事务传播行为规定了在一个事务方法调用另一个事务方法时,事务该如何进行传播和处理。Spring 提供了 7 种事务传播行为,这些行为定义在 org.springframework.transaction.annotation.Propagation 枚举类中。以下是对这 7 种事…