Java中的网络编程如何理解——精简

      最后更新:2022-08-03 07:36:00 手机定位技术交流文章

      引言

      经过前面的课程,我们已经掌握了多线性的知识,我不知道每个人都知道吗?如果你有,今天我们开始学习Java中的网络编程,网络编程是什么?网络编程允许程序与网络上的其他设备的数据交互。常见的通信模式有两种形式:Client-Server(CS)、Browser/Server(BS)。接下来,我们将学习网络通信的三个要素:UDP通信、TCP通信。

      网络通信的三要素

      关键的三要素:

      • IP地址:网络中的设备的地址。
      • 终端: 应用程序是设备中唯一的标识符.
      • 协议: 通过网络传输数据库的规则, 常见的协议包括UDP和TCP协议.

      (在通信过程中,终端通过IP地址寻找设备来确定该设备中的应用程序程序。

      IP

      IP地址形式:

      • 公共及私人地址(供本地区域网络使用)
      • 192. 最初, 它 是 一 种 共同 的 本地 网络 地址, 其 范围 是 - -, 特别 用于 组织 机构 内部 的 使用 。

      IP常用命令:

      • ipconfig:查看主机IP地址
      • pingIP地址:检查网络是否连接

      特殊IP地址:

      • 作为返回地址的 Host IP: 或 localhost: 也可以作为本地返回环地址,只寻找当前的主机。

      IP地址操作类InetAddress

      InetAddress通用API

      名称 说明
      public static InetAddress getLocalHost() 返回主机地址对象
      public static InetAddress getByName(String host) 获取指定的主机IP地址对象,参数是域名或IP地址
      public string getHostName() 获取此IP地址的主机名称
      public string getHostAddress() 返回IP地址字符串
      public boolean isReachable(int timeout) 在指定的毫秒内与与IP地址对应的主机连接,连接返回真

      端口号(了解)

      端口代码: 识别在计算机设备上运行的进程,指定为 16-bit 双进制, 范围为 0-65535.

      端口类型为0-1023,具有预定义的已知应用程序职业(例如HTTP职业80、FTP职业21)。

      注册端口: 1024-49151,分配给用户进程或某些应用程序(例如,Tomcat占用8080,MySQL占用3306)。

      动态端口:49152-65535称为动态端口,因为它们通常不分配一个固定进程,而是动态。

      注意:我们开发的程序选择注册端口,而两个程序的端口数不能在一个设备中相同,否则会发生错误。

      协议

      传输层有两个共同的协议:

      • TCP:传输控制协议
      • UDP:用户数据协议

      TCP 协议特点:

      • 使用TCP协议,双方必须先建立连接,这是面向连接的可靠的通信协议
      • 在传输前,连接是通过“三手”方法建立的,所以可靠
      • 大量数据可以在连接中传输
      • 连接和发送数据需要确认,转移完成后,需要释放已建立的连接,因此通信效率降低

      TCP协议通信场景:

      • 提高资料安全要求,例如文件下载、财务和其他数据通信

      UDP 协议:

      • UDP是一个不连接和不可靠的传输协议
      • 将数据源IP、目的地IP和端口封入数据包中,无需创建连接
      • 每个包的大小限制为64KB
      • 发送不可靠,对方是否准备好,收件人没有收到或确认
      • 可以在数据传输结束时不释放资源的情况下进行广播和传输,低成本,快速

      UDP协议通信场景:

      语言调用 、 视频调用等.

      UDP通信

      DatagramPacket:数据包对象

      构造器 说明
      public DatagramPacket(byte[ ]buf,int length,InetAddress address,int port)

      创建发送端数据包对象

      buf:要发送的内容,字节数

      长度:发送内容的字节的长度

      地址:收件人

      IP地址对象

      端口:接收机的端口号码

      public DatagramPacket(byte [ ] buf, int length  )

      创建接收器数据包对象

      buf:用于存储接收器的内容

      长度:可以接收的内容的长度

      DatagramSocket:发送者和接收者对象

      构造器 说明
      public DatagramSocket( ) 在发送端创建一个接口对象,系统将随机分配一个端口号码
      public DatagramSocket(int port) 创建接收端口对象并指定端口号
      方法 说明
      public void send (DatagramPacket dp) 发送数据包
      public void receive (DatagramPacket p) 接收数据包

      为了更好地理解DatagramSocket和DatagramPacket,我们可视化UDP图像作为在线购买.其中DatagramPacket就代表我们想要网购的商品,虽然这是我们买的,但是我们肯定没有办法自己把货物带走,因此,需要快速运输,DatagramSocket扮演这个角色。 merchants需要通过DatagramPacket邮寄包装的货物,然后,货物通过Express Datagram Socket向买方交付。

      注:服务端需首先启动,然后等待客户端将数据发送到服务端。

      TCP通信

      Socket

      构造器 说明
      public Socket(String host , int port) 在发送端创建一个接口对象,连接到服务端,参数是服务端程序的ip和端口。
      方法 说明
      OutputStream getOutputStream( ) 获得字节输出流对象
      InputStream getInputStream() 获得字节输入流对象

      ServerSocket(服务端)

      构造器 说明
      public ServerSocket(int port) 注册服务端端口
      方法 说明
      public Socket accept()

      等待接口客户端的索克通信连接,连接成功返回索克对象,客户端建立end-to-end通信

      实现多个客户同时接收

      如果想要实现多个客户同时接收的话,就需要使用多线程的知识,创建多个服务端。

      首先创建一个继承类,创建多个线程:

      客户端代码:

      服务端代码:

      具体操作:在运行单个服务端代码之后,运行多个客户端代码即可实现多个客户同时接收。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31384.html

          热门文章

          文章分类