美文网首页
JavaSE进阶 网络编程

JavaSE进阶 网络编程

作者: 扶光_ | 来源:发表于2023-10-11 19:08 被阅读0次

可以让程序与网络上的其他设备中的程序进行数据交互。

  • 常见的基本模式
    C/S模式(client server)
    需要开发软件,如果你要更新某个功能是需要用户去更新这个软件的,如果用户选择不更新那么就无法实现这个新功能
    B/S模式(browser server)
    不需要程序员开发,基于浏览器

一,网络通信三要素

1.1ip地址

设备在网络上的地址,是唯一标识
ipv4(32位)


ipv4地址

ipv6(128位),号称可以为地球每一个沙子编号


ipv6地址

ip地址形式

  • 公网地址和私有地址(局域网使用192.168开头)

  • ip常用命令
    ipconfig: 查看本机ip地址
    ping (ip地址):检查网络是否连通

  • ip地址操作类InetAddress

1.2端口

应用程序在设备中的唯一标识。比如别人给你发信息你要通过端口来判断是微信还是QQ消息


端口

端口号:16位的2进制 0-65536

端口类型

  • 周知端口 0-1023,被预先定义的应用使用如http占用80
  • 注册端口:1024-49151 分配给进程或应用程序 tomcat使用8080端口
  • 动态端口:49152-65535 不固定分配某种进程,动态分配

1.3协议:、

数据在网络中传输规则,常见udp和tcp协议
通信协议
连接和通信数据的规则被称网络通信协议

TCP协议

特点

  • 必须双方先建立连接,它是一种面向连接的可靠数据传输
  • 传输前,采用三次握手方式建立连接
  • 可进行大数据量的传输
  • 连接,发送数据都需要进行确认,且完毕后还需要释放连接,通信效率低
    tcp三次握手
    主要是客户端和服务器相互确认收发功能是否完好的过程
    可以应用于对信息安全较高的常见如文件下载,金融数据通信

UDP协议

  • 是一种无连接,不可靠传输的协议
  • 将数据源IP、目的地ip和端口封装成数据包,不需要建立连接
  • 每个数据包的大小限制在64kb内
  • 不管对方是否准备好,接收方收到也不去而
  • 可以广播发送,发送数据无需释放资源,开销小,速度快

使用场景,语言通话,视频会话等

二,UDP通信

DatagramPacket 数据包对象 装数据的

DatagramSocket 发送端和接收端对象
DatagramSocket类成员方法send()发送数据包 receive()接收数据包


收发

多发多收信息

反复接收数据,使用while循环

广播 组播

通信
  • 广播实现方式
    使用广播地址255.255.255.255
    发送端发送数据包的目的地址写广播地址且指定端口 (255.255.255.255,88880)
    本机所在网段的其他主机的程序只要匹配端口成功就可以收到信息了,声明一样的端口
  • 组播实现方式
    组播地址224.0.0.0-239.255.255.255
    发送端数据包地址必须是组播ip
    接收端必须绑定发送端组播ip,端口要一致
    DatagramSocket的子类MulticastSocket可以在接收端绑定组播ip

TCP通信

tcp是一种面向连接,可靠,安全的传输数据的协议。
可进行大数据传输


tcp通信

基本操作


tcp基本操作

因为现在服务端只有一个线程,所以只能与一个客户端进行通信,不能实现同时与多个客户端消息

多发多收,实现可以同时接收多个客户端

类似于弹幕 ,汇总到一个服务端里面


image.png
image.png

利用线程来实现同时接收多个客户端的消息会出现一个问题。那就是如果有1000个用户就需要创建1000个线程,会很浪费性能,所以引入线程池处理多个客户端信息来进行优化

线程池处理

即时通信

是发给每一个个体

就是客户端发给服务器端,服务器端转发到每个管道socket上,用每个管道的输出流在推出去。


端口转发
image.png
image.png

B/S实现

浏览器访问服务端,不需要开发客户端


image.png

服务器必须给浏览器响应http协议格式的数据,才可以返回对应数据。是基于http协议


基于http协议上传

相关文章

  • JavaSE-网络编程

    [TOC] 第一章:网络编程基础 1.1-软件结构 C/S结构 :全称为Client/Server结构,是指客户端...

  • JavaSE学习笔记——网络编程

    要想实现网络传输,需要考虑哪些问题如何准确地定位到网络上的一台主机如何才能进行可靠高效的传输 Java如何实现网络...

  • Java编程语言基础知识进阶学习路线及目标

    Java编程语言基础知识进阶学习内容及学习目标,此阶段学习具备JavaSE基本开发技巧,可胜任简单单机应用程序。对...

  • javaSE_day18_网络编程

    C/S:客户端 /服务器 B/S:浏览器 /服务器 -------------------------------...

  • JavaSE Day23 网络编程

    1. 网络分层通常是 5 层,是哪 5 层? 上面 4 层主要对应的协议是什么? 2. 运输层包装了什么?网络层包...

  • java web目录

    java web目录 web编程基础web编程进阶(一)web编程进阶(二)web编程原理

  • Python--网络编程和并发

    python高级进阶-网络编程和并发 1、简述 OSI 七层协议。 OSI是Open System Interco...

  • java进阶(三):网络编程

    OSI模型 首先用一张图简单介绍一下OSI模型(开发系统互联参考模型): 从上图中可以看见,OSI模型共分7层,每...

  • Python进阶学习---网络编程

    网络编程 Python 提供了两个级别访问的网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 ...

  • Android进阶之光——网络编程

    网络编程 网络分层 网络分层有不同的模型,有的分为7层,有的分为5层。 物理层 该层负责比特流在节点间的传输,即负...

网友评论

      本文标题:JavaSE进阶 网络编程

      本文链接:https://www.haomeiwen.com/subject/ndnbbdtx.html