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

Java之网络编程

什么是网络编程?

在网络通信的协议下,不同计算机上运行的程序进行的数据传输

常见的软件架构

cs架构(客户端和服务器)

bs架构(浏览器和服务器)

这两个都是通过访问服务器来显示画面给用户用什么架构取决于业务要求

网络编程三要素(IP 端口 协议)

IP

IPV4的地址分类

可以分为:公网Ip(万维网使用)和私网ip(局域网使用)

192.168.开头的就是私网ip专门为私有企业,组织,机构内部使用来节省Ip地址

特殊IP

127.0.0.1回环地址,也称本机地址,永远只会寻找当前本机的ip

InetAddress类

端口号

应用程序想要往外发送数据必须绑定端口号,一个应用程序只能绑定应该端口号

协议

udp:发送数据的时候,不会检查两台主机是否连接

tcp:发送数据的时候,会检查两台主机是否连接

使用UDP协议发送数据

1:创建对象DatagramSocket(快递公司)

2:打包数据(创建DatagramPacket对象)

3:发送数据

使用TCP协议发送数据

使用UDP协接受数据

1:创建对象DatagramSocket(快递公司)绑定端口号跟发送时要一样

2:接收数据包(创建DatagramPacket对象)

3:解析数据包

4:释放资源

最后我们先运行接收端,在运行发送端

注意:

1:从哪个端口发送无所谓,只要发到的端口和接收的端口一致即可

2:在接收端,运行到receive这个方法时时堵塞的,他要一直等待发送端发送数据

练习一:做一个简单的聊天室

发送端:

接收端:

UDP的三种通信方式:
单播:一对一的发送数据

组播:一个可以给一组电脑发送数据

广播:一个可以给一个局域网内的所有电脑发送数据

组播的代码

发送端:

接收端:

广播的代码把发送端的要发送的Ip地址改成255.255.255.255即可

这样不同的ip地址但是在同一个局域网内的主机也可以接收了

Tcp的通信协议

TCP协议发送数据

TCP协议接收数据

这有一个BUG,就是接收中文的数据会乱码,因为他只能一次接收一个字节的数据

我们可以用高级流,把字节流转换成字符流

三次握手和四次挥手

综合练习一

综合练习二

综合练习三

思路

1:先把本地文件写到内存,在从内存读取到流中

2:在从流中读取文件的数据到内存,在从内存写到本地文件

综合练习四

利用线程+循环来操作

发送端的代码不变

接收端的代码利用线程池+循环来改进

综合练习五

改进综合练习四的代码

这里每次运行都会创建一个线程对象然后在销毁浪费资源,我们可以用线程池来改进

发送端和线性池里面的代码不变,接收端的代码改变

综合练习六

利用bos架构来接收浏览器的信息

这里不需要写客户端了,直接用浏览器来访问

接收端的代码

我们直接用浏览器来访问

我们直接在浏览器输入127.0.0.1:10012(IP地址+端口号)

我这里输入的是回环地址也就是本机的地址,端口号就是我们绑定的10012

相关文章:

  • [前端面试场景题]虚拟列表
  • OceanBase数据库基于脚本的分布式存储层性能深度优化
  • C++:背包问题习题
  • 022-spdlog
  • linux_vim
  • 把生产队的大模型Grok 3 beta用来实现字帖打磨
  • 【设计模式】单件模式
  • LLM中的强化学习算法——RLHF、PPO、DPO、GRPO
  • 关闭表单后再次打开时校验提示未清除
  • SQL中的索引是什么
  • Retrofit中Jsoup解析html(一)
  • 老龄化社会的行业分析——以日本为例
  • string常见的接口使用(3)
  • 压缩壳学习
  • 3.21学习总结Java
  • 第27章:Ingress控制器实战:Nginx Ingress与Kong Gateway
  • 数据库系列之:Sqlserver 表开启cdc后,对应的ct表数据保存时间
  • Ligolo-ng 保姆级使用指南:新一代隧道代理工具(OSCP适用)
  • 天闻数媒名师工作室系统 fileTempDownload 存在文件读取漏洞(DVB-2025-8998)
  • 华为云Flexus L实例和X实例有啥区别?云服务器Flexus全解析
  • 金融监管总局:正在修订并购贷款管理办法,将进一步释放并购贷款的潜力
  • 刘诚宇、杨皓宇进球背后,是申花本土球员带着外援踢的无奈
  • 六大车企一季报:比亚迪近92亿净利稳居第一,多家车企营收下滑
  • 一周人物|何子彦任职光州双年展,陈意心讲述五原路往事
  • 上海国际电影节特设“走进大卫·林奇的梦境”单元
  • 厦大历史系教授林汀水辞世,曾参编《中国历史地图集》