Java——网络编程(UDP与TCP通信及实现聊天案例)

      最后更新:2022-08-04 11:10:01 手机定位技术交流文章

      目录

      1.网络通信协议是什么?

      TCP/IP协议

      3、协议分类

      3.1、UDP协议

      3.2、TCP协议

      网络编程的三个要素

      4.1、协议

      4.2、IP地址

      4.3、端口号

      因特地址第五类

      5.1,InetAddress通用方法

      6、UDP通信程序

      6.1,DatagramSocket类

      6.2.DatagramSocket通用方法

      6.3、代码实现

      6.执行聊天案例

      7、TCP通信程序

      7.1.索克类施工方法

      7.2,索克类通用方法

      7.3、代码实现

      7.撤销通讯程序

      1.网络通信协议是什么?

      通过计算机网络可以连接多个计算机.一个位于同一网络的计算机在连接和通信时必须遵守某些规则,就像开车在路上遵守交通规则一样。在计算机网络中,这些连接和通信规则被称为网络通信协议.对数据传输格式、传输速度、传输步骤等均有统一的规定;为了完成数据交换,双方必须同时遵守。

      TCP/IP协议

      在上述图中,TCP/IP协议的四个层是应用程序层、传输层、网络层和链接层,每个层负责不同的通信功能。

      链层:用于定义物理传输通道,通常是一些网络连接设备的驱动协议,例如为光纤和网络线提供。

      网络层:是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。

      传输层:主要允许网络程序通信,在进行网络通信时可以使用TCP协议或UDP协议。

      应用程序层:主要负责应用程序协议,如HTTP协议、FTP协议等。

      3、协议分类

      3.1、UDP协议

      用户数据图协议(User Datagram Protocol)。UDP是一个非连接的通信协议,这意味着数据传输时,数据的发送者和接收者不建立逻辑连接。

      简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。

      由于使用UDP协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输例如视频会议都使用UDP协议,因为这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

      但是在使用UDP协议传送数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议。UDP的交换过程如下图所示。

      3.2、TCP协议

      传输控制协议 (Transmission Control Protocol)。TCP协议是一种面向连接的通信协议,即传输数据之前,建立传送器与接收器之间的逻辑连接,然后再传输数据,它提供了两个计算机之间的可靠和无误的数据传输.

      在TCP连接中,客户端和服务器必须清楚地标识,客户端向服务器发送连接请求,每个连接创建需要“三个手”。

      什么是三次握手

      三个握手:在TCP协议中,在发送数据的准备阶段,客户端和服务器之间进行三个握手,以确保连接的可靠性。

      第一次握手时,客户端向服务器发送连接请求并等待服务器确认。

      第二次握手将发送回客户端的响应,通知客户端已收到连接请求。

      第三次握手,客户端再次向服务器端发送确认信息,确认连接。整个交互过程如下图所示。

      网络编程的三个要素

      4.1、协议

      TCP/IP协议是上面描述的。

      4.2、IP地址

      IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用于网络中独特的编码计算机设备。如果我们把个人电脑和电话比起来,因此IP地址与电话号码相符。

      IPv4是一个32位二进制数字,通常分为四个字符,代表为a.b.c.d的形式,例如192.168.65.100。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。【IPv6】:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。

      为了扩大地址空间,建议通过IPv6重新定义地址空间,使用128位地址长度,每16字节1组,分成8组16英寸系数,代表为ABCD:EF01:2345:6789:ABCD:EF01:2345:6789,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

      常用命令

      • 查看本机IP地址

        ipconfig

        ipconfig all

      • 检查网络是否连通

        ping vault IP地址

      • 特殊的IP地址

        本机IP地址:127.0.0.1localhost

      4.3、端口号

      网络通信基本上是两个进程(应用程序)的通信。 每个计算机都有多种进程,那么在网络中通信时,我们如何区分这些进程?

      如果IP地址只能识别网络中的设备,那么端口号只能识别设备中的进程(应用程序)。

      端口数:由两个字符表示的整数,它的值范围为0–65535。其中,0到1023之间的端口号用于一些众所周知的网络服务和应用程序,普通应用程序需要使用超过1024的端口数。如果其他服务或应用程序使用端口号,这将导致当前程序无法启动。

      常见的服务占用端口

      80:HTTP服务

      8080:tomcat

      3306:mysql

      1521:oracle

      443:HTTPS服务,安全加密HTTP

      21:FTP服务,文件传输

      22:SSH服务,安全加密远程登录

      23:电话网服务,远程登录

      因特地址第五类

      5.1,InetAddress通用方法

      方法名 说明
      public static InetAddress getLocalHost() 返回本地主机。
      public static InetAddress getByName(String host) 以ip和主机名获取InetAddress
      public String getHostAddress() 获取ip地址
      public String getHostName() 获取主机名

      6、UDP通信程序

      6.1,DatagramSocket类

      构造方法

      方法名 说明
      DatagramSocket() 创建数据包并将其绑定到主机地址上的任何可用端口
      DatagramPacket(byte[] buf,int len,InetAddress add,int port) 创建一个发送镜头长度的数据包到指定端口上的指定主机的数据包

      6.2.DatagramSocket通用方法

      方法名 说明
      void send(DatagramPacket p) 发送数据报包
      void close() 关闭数据报套接字
      void receive(DatagramPacket p) 接受数据报包

      6.3、代码实现

      发送端

      接收端

      6.执行聊天案例

      发送端

      接收端

      7、TCP通信程序

      7.1.索克类施工方法

      方法名 说明
      Socket(InetAddress address,int port) 创建一个流字符串并将其连接到指定的IP定义端口
      Socket(String host, int port) 创建一个流字符串并将其连接到指定主机上的指定端口号码

      7.2,索克类通用方法

      方法名 说明
      InputStream getInputStream() 返回此插座的输入流
      OutputStream getOutputStream() 返回该插座的输出流

      7.3、代码实现

      客户端

      服务器端

      7.撤销通讯程序

      客户端

      服务器端

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

          热门文章

          文章分类