当前位置: 首页 > news >正文

JAVASE:网络编程

什么是网络编程?

1:什么网络编程?
计算机跟计算机之间通过网络进行数据传输。
2.常见软件架构有哪些?
CS/BS
3.通信的软件架构CS\BS的各有什么区别和优缺点
CS:客户端服务端模式需要开发客户端
BS:浏览器服务端模式不需要开发客户端。
CS:适合定制专业化的办公类软件如:IDEA、网游
BS:适合移动互联网应用,可以在任何地方随时访问的系统。
高级软件人才培训专家

网络编程三要素

IP:设备在网络中的地址,是唯一的标识。
端口号:应用程序在设备中唯一的标识,
协议:数据在网络中传输的规则,常见的协议有UDP、TCP、http、https、ftp。
IP
1.lP的作用
设备在网络中的地址,是唯一的标识
2.IPv4有什么特点?
目前的主流方案
最多只有2^32次方个ip,目前已经用完了
3.IPv6有什么特点?
为了解决IPv4不够用而出现的
最多有2^128次方个ip
可以为地球上的每一粒沙子都设定ip
IPV4小细节
1.现在如何解决IPV4不够的问题?
利用局域网IP解决IP不够的问题
2.特殊的IP是什么?
127.0.0.1(永远表示本机)
3.常见的两个CMD命令?
ipconfig:查看本机IP地址
ping:检查网络是否连通
InetAddress类的使用

方法说 明
static InetAddress getByName(String host)确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
String getHostName()获取此IP地址的主机名
String getHostAddress()返回文本显示中的IP地址字符串
//1.获取InetAddress的对象
//IP的对象一台电脑的对象
InetAddress address = InetAddress.getByName("DESKTTOP-50JJSAM")
System.out.println(address);
String name = address.getHostName
System.out.println(name);//DESKTOP-50JJSAM
String ip = address.getHostAddress();
System.out.println(ip);//192.168.1.100

端口号

  1. 应用程序在设备中唯一的标识。
  2. 端口号:由两个字节表示的整数,取值范围:0~65535 其中0~1023之间的端口号用于一些知名的网络服务或者应月用。
    我们自己使用1024以上的端口号就可以了。
  3. 注意:一个端口号只能被一个应用程序使用。

协议
在这里插入图片描述

  1. UDP协议

用户数据报协议(UserDatagram Protocol)
UDP是面向无连接通信协议。
速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据

  1. TCP协议

传输控制协议TCP(Transmission Control Protocol)
TCP协议是面向连接的通信协议。
速度慢,没有大小限制,数据安全。

UDP通信程序

发送数据

//1.创建DatagramSocket对象(快递公司)
//细节:
//绑定端口,以后我们就是通过这个端口往外发送
//空参:所有可用的端口中随机一个进行使用
//有参:指定端口号进行绑定
DatagramSocket ds = new DatagramSocket();
//2.打包数据
Stringstr="你好威啊!!!";
byte[] bytes = str.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10086;
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);
//3.发送数据
ds.send(dp);
//4.释放资源
ds.close();

接收数据

//1.创建DatagramSocket对象(快递公司)
//细节:
//在接收的时候,一定要绑定端口
//而且绑定的端口一定要跟发送的端口保持一致
DatagramSocket ds = new DatagramSocket(10086);
//2.接收数据包
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
//3.解析数据包
byte[] data = dp.getData();
int len = dp.getlength();
InetAddress address = dp.getAddress();
int port = dp.getPort();
System.out.println("接收到数据"+ new String(data, 0,1en));
System.out.println("该数据是从"+address+"这台合电脑中的"+port+"这个端口发出的");
//4.释放资源
ds.close();

UDP的三种通信方式(代码实现)

1.单播
以前的代码就是单播
2.组播
组播地址:224.0.0.0 ~ 239.255.255.255
其中224.0.0.0~224.0.0.255为预留的组播地址
3.广播
广播地址:255.255.255.255
组播发送端代码

MulticastSocket ms = new MulticastSocket();
//创建DatagramPacket对象
String s = "你好,你好!";
byte[] bytes = s.getBytes();
InetAddress address = InetAddress.getByName("224.0.0.1");
int port = 10000;
DatagramPacket dp= new DatagramPacket(bytes, bytes.length, address, port);
//调用MulticastSocket发送数据方法发送数据
ms.send(dp);
//释放资源
ms.close();

组播接收端代码

 public static void main(String[] args) throws IOException {//1.创建MulticastSocket对象MulticastSocket ms = new MulticastSocket(10000);//2.将将当前本机,添加到224.0.0.1的这一组当中InetAddress address = InetAddress.getByName("224.0.0.1");ms.joinGroup(address);//3.创建DatagramPacket数据包对象byte[] bytes = new byte[1024];DatagramPacket dp = new DatagramPacket(bytes, bytes.length);//4.接收数据ms.receive(dp);//5.解析数据byte[] data = dp.getData();int len = dp.getLength();String ip = dp.getAddress().getHostAddress();String name = dp.getAddress().getHostName();System.out.println("ip为:"+ip+",主机名为:"+name+"的人,发送了数据:"+new String(data,0,len));}

广播发送端代码
单播这段改了就是

InetAddress address = InetAddress.getByName("255.255.255.255");

TCP通信程序

发送端
1.创建客户端的Socket对象(Socket)与指定服务端连接
Socket(String host, int port)
2.获取输出流,写数据
OutputStream getOutputStream()
3.释放资源
void close()

public static void main(String[] args) throws IOException {//TCP协议,发送数据//1.创建Socket对象//细节:在创建对象的同时会连接服务端//如果连接不上,代码会报错Socket socket = new Socket("127.0.0.1", 10000);//2.可以从连接通道中获取输出流OutputStream os = socket.getOutputStream();//写出数据os.write("你好".getBytes());//3.释放资源os.close();socket.close();}

接收端
1.创建服务器端的Socket对象(ServerSocket)
ServerSocket(int port)
2.监听客户端连接,返回一个Socket对象
Socket accept()
3.获取输入流,读数据,并把数据显示在控制台
InputStream getInputStream()
4.释放资源
void close()

public static void main(String[] args) throws IOException {//TCP协议,接收数据//1.创建对象ServerSockerServerSocket ss = new ServerSocket(10000);//2.监听客户端的链接Socket socket = ss.accept();//3.从连接通道中获取输入流读取数据//InputStream is = socket.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));int b;while ((b = br.read()) != -1) {System.out.print((char) b);}}

三次握手四次挥手
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 【会员专享数据】1960—2023年我国省市县三级逐年降水量数据(Shp/Excel格式)
  • NPOI操作EXCEL文件 ——CAD C# 二次开发
  • 【转bin】EXCEL数据转bin
  • Day12
  • 智能全能邮箱:是否真能替代企业邮箱系统?
  • postman自动化测试
  • Linux基本指令(三)
  • 得力Deli GE330W打印机信息
  • JAVA-springboot JOSN解析库
  • fmod产生的误差应该如何解决?
  • 前端判断内容文字是否溢出容器,创建临时元素来模拟文本实际宽度
  • thymeleaf直接调用Spring Bean中定义的方法
  • Maven 构建缓存与离线模式
  • SSM spring Bean基础配置
  • simulink这边重新第二次仿真时,直接UE5崩溃,然后simulink没有响应
  • linux 故障处置通用流程-36计+1计
  • 比较运算符:==、!=、>、<、>=、<=
  • 【C/C++】进一步介绍idl编码
  • 《动手深度学习》8.2文本预处理—代码分析
  • 运行labelme
  • 企业vi设计的作用与意义/seo还有前景吗
  • 徐州企业网站建设公司/搜狗网站收录提交入口
  • 做网站用c语言吗/成人技能培训班有哪些
  • php做网站的公司有哪些/网络媒体广告代理
  • 网站硬件建设方案/智能搜索引擎
  • 怎么做网站表格/商丘seo外包