终于有人把TCP协议与UDP协议给搞明白了

      最后更新:2022-03-18 15:00:58 手机定位技术交流文章

      网络方案拟订由三个部分组成:IP地址、港口号码和通信协议,本条规定主要包括TCP和UDP之间的两个通信协议,以及方案的执行。

      最初,我们必须了解IP地址、港口号码和通信协议。

      一、IP地址

      IP地址是确定网络中计算机的唯一办法。IP 地址可以是 IPv4 或 IPv6 。IPv4 表示为小数点或二进制表达式。十进制是一种更加流行的表达自我的方式。例如,IPv6 表示为十六进制表达式。一般不常用。

      无法获取文件夹“%s”:%s

      Open cmd on Windows, 键入命令 ipconfig, 并按回车查看它。 打开 Linux 或 Mac 中的终端, 运行 if config 命令, 并点击回车查看它 。

      二、端口号

      端口号是计算机中程序的一个整数数字标记,用于识别它们之间的特性。

      024 没有系统地使用或维护港口号,0 65535是一个合法港口号,这意味着当我们指定一些程序时,我们选择1024至65535之间的整数值。

      例如,先前学到的 MySQL 港口号为3306;SQLServer港口号为1433;甲骨文港口号为1521。

      至关重要的是,这些数据库的对应端口号应储存在深层大脑中,然后在与数据库连接时加以使用。

      三、通信协议

      一般而言,通信协定是网络通信条例,分为TCP和UDP协定。

      第一种:TCP协议

      根据该议定书,TCP是连接、可靠、以字节为基础的传输层议定书。

      例如,电话交谈需要两个参与者连接,以便进行交谈。

      数据传输效率低,而且很安全。

      第二种:UDP协议

      UDP是一个与英文名称用户数据表协议和中文名称数据报告协议没有连接的传输层通信协议。

      例如,案文并不需要缔约方之间建立联系,但数据报告的规模应限于64k。

      好处包括:高效、有风险的数据运输以及容易倾倒包裹的能力。

      四、三个要素与网络模式之间的关系表

      1. 网络方案拟订的三个方面由关系图代表。

      Nota bene: 图形上的端口号及 IP 地址仅供演示之用,不属实。

      2. TCP/IP 参考模型和OSSI参考模型

      五、TCP编程

      由于TCP是一种以字节为基础的传输层协议,TCP方案是以IO为基础的。

      要为客户创建对象, 我们必须使用 Socket 类 。 要为服务器构建对象, 我们必须使用 ServerSocket, 执行 接受 () 以收听客户访问 。

      无法关闭临时文件夹:%s。

      实现客户端和服务器的步骤:

      先决条件:建立一个有两个模块(模型)的项目,一个用于在客户端安装适当的代码,另一个用于在服务器端安装相关的代码。

      目录结构如下图

      客户端:

      1. 创建 Socket 对象,并提供服务器- 终端应用程序的端口号以及服务器- 终端主机的 IP 地址。

      2. 套接字对象引用 GetOutputStream () 函数来检索字节输出流对象。

      3. 调用字节输出流的字节( ) buf) 或字节( intb) 向服务器发送指定数据。

      4、记得关闭流。

      服务器端:

      1. 创建服务器套件对象,并指定应用程序的端口号,该端口号必须与客户端提供的端口号相同。

      2. 要倾听客户请求, 请使用服务器套件对象的接受功能, 并将值返回到 Socket 对象 。

      3. 使用Socket 对象的 GetInputstream () 函数,获取字节输入流对象。

      4. 为获取数据,使用流体的读(字节[ buff)或读()方法。

      5、记得关闭流。

      实例:

      客户端将数据传送到服务器, 服务器在服务器端显示此数据 。

      客户类型(客户)

      package cn.tkrnet.client;
      
      import java.io.IOException;
      import java.io.OutputStream;
      import java.net.Socket;
      
      public class Client {
          public static void main(String[] args) throws IOException {
              
      制作一个套接字对象 。指定要发送到服务器端端的 IP 地址。此外,服务器应用程序的端口号
      本地主机是IP地址
              Socket client = new Socket("localhost",9000);
              
      获取输出流 。用于将数据传输到服务器 。
              OutputStream os = client.getOutputStream();
              
              os.write("Java is my friend !".getBytes());
      我不知道你在说什么,System。 我不知道你在说什么。
      
      / 减少的洋流
              os.close();
              client.close();
          }
      }
      

      (后备)服务器类

      package cn.tkrnet.server;
      
      import java.io.IOException;
      import java.io.InputStream;
      import java.net.ServerSocket;
      import java.net.Socket;
      
      public class Server {
          public static void main(String[] args) throws IOException {
      我不知道你在说什么,System. 我不知道你在说什么, 出去. (a) printl(..) 服务器正在运行--
      
      / 初始化服务器套件对象,这里使用的端口号必须与客户端使用的端口号相同。
              ServerSocket server = new ServerSocket(9000);
      
      / 采用接受()方法。它用来倾听客户的欲望。
              Socket socket = server.accept();
      
      / 获得输入流
              InputStream is = socket.getInputStream();
      
      / 查看输入流中的数据。
              int b = 0;
              while ((b =is.read()) != -1){
                  System.out.print((char)b);
              }
      / 减少的洋流
              is.close();
              socket.close();
              server.close();
          }
      }
      

      执行程序时, 您必须先在服务器上运行程序代码, 然后在客户端上运行程序代码。 客户端向服务器提出请求, 前提是服务器是开着的 。

      (后备)服务器类运行结果:

      - 服务器已经启动
      

      客户类型(客户)运行结果:

      信息已发送
      

      客户类型(客户)运行后,(后备)服务器类收到信息,运行结果:

      - 服务器已经启动
      Java is my friend !
      

      实例分析:

      在服务器启动后,服务器上的接受()功能将保持监听状态,直到客户端连接到服务器,服务器从流中收集数据。

      恕我直言,这是教科书中 极其坚不可摧的单向通信的例子。

      六、UDP编程

      UDP使用数据报告进行数据传输;客户端和服务器端之间没有分离;发射机和接收器都不得被错误地激活;然而,数据可能会丢失。 发送的文字有字数限制, 大小必须限制在64k。

      实现发件人和接收人的步骤:

      建立一个有两个模块(模型)的项目,一个是寄送缔约方相关代码,一个是接收方相关代码。

      目录结构如下图

      发送方:

      1. 不论是否指定了应用程序的端口号,均创建数据套件对象。

      传输数据编制

      3. 创建数据组包件天体,用来捆绑传送的数据,对于传输材料,需要四个因素:数量、地点和接收方的端口号。

      4. 使用 DatagramSocket 对象发送() 函数传输数据 。

      5、记得关闭流。

      接收方:

      1. 通过提供接收方必须提供的端口号,创建数据套件对象。

      2. 要接受发件人的数据,应创建一个字节类型阵列。

      3. 创建数据组包件对象并准备接受数据。

      4. 为接收数据,使用数据组对象接收()功能。

      5. 将字节类型阵列数据转换为字符串类型数据,并使用字符串类型创建技术显示数据。

      6、记得关闭流。

      实例:

      信息由发送人发送,接收人接收并展示。

      发件人( 发件人) 类

      package cn.tkrnet.Sender;
      
      import java.io.IOException;
      import java.net.*;
      
      public class Sender {
          public static void main(String[] args) throws IOException {
      
      / 制作一个数据收件或数据收件包。然后输入770 作为发件人的端口号 。
      DatagramSocket ds = 新 DatagramSocket(770); / 端口号是可选的 。
      我不知道你在说什么 System 我不知道你在说什么
      
      / 构建数据报告器。用来发送数据
              byte[] b = "Java is my friend !".getBytes();
      
      接收方的港口号为8800。我不确定你在说什么 因为网络通讯。 GetByName (“ 当地主机”) 返回主机的 IP 地址 。
              DatagramPacket dp = new DatagramPacket(b,b.length, InetAddress.getByName("localhost"),7788);
      
      抱歉, ds. send( dp); // 传输数据报告
      我不知道你在说什么,System. 我不知道你在说什么,出去。 (a) 印刷(“发送的数据”);
      / 减少的洋流
              ds.close();
          }
      }
      

      接收(收到)类

      package cn.tkrnet.receiver;
      
      import java.io.IOException;
      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      
      public class Receiver {
          public static void main(String[] args) throws IOException {
      我不知道你在说什么 System 我不知道你在说什么
      
      制作数据广告标的。给出的端口号应与传输数据的端口号相同。
      /(不是770,发件人的港口号)发货人的港口号为7788。
              DatagramSocket ds = new DatagramSocket(7788);
      
      / 创建一个将接收数据报告的对象。
              byte[] b = new byte[1024];
              DatagramPacket dp = new DatagramPacket(b,b.length);
      
      // 获得数据
              ds.receive(dp);
              System.out.println(new String(b,0,dp.getLength()));
      / 减少的洋流
              ds.close();
          }
      }
      

      N.B. 在启动程序时, 选择先执行发件人还是接收器软件。 可能有数据滴投软件包, 这样我们都先运行接收器的程序代码, 然后是发送者的程序代码 。

      接收(收到)类运行结果:

      ---接收方---
      

      发件人( 发件人) 类运行结果:

      发送 -- -- 发送 -- -- 数据发送
      

      发件人( 发件人) 类运行后,接收(收到)类接收到信息,运行结果:

          贾瓦是我的朋友!
      

      实例分析:

      只有在接收者开始使用第7788号港口程序时,传送器才会将数据发送到指定的第7788号港口,接收器将接收数据。

      我告诉你,它也是一个非常强烈 和直截了当的单向交流的例子。

      原文链接:
      https://mp.weixin.qq.com/s?__biz=MzIwNjQ5MDk3NA==&mid=2247499605&idx=1&sn=94357e34924406dab6778752c982a260&utm_source=tuicool&utm_medium=referral

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

          热门文章

          文章分类