Tomcat原理(1)——IDEA实现模拟服务端和客户端的互传

ops/2024/12/16 4:29:23/

引入

一、什么是Tomcat

        Tomcat是一个开源的Java Web应用服务器,主要用于运行Java编写的网站和Web应用程序。实质上可以理解为是一个容器,一个用于承载项目的容器。

         tomcat有什么作用,最基础来讲,当我们创建一个文件,当http访问时,该文件是无法访问的。

        但我们把这些文件放入tomcat中,Tomcat可以接收和反馈外部的请求,并且也可以将用户的HTTP请求传递给容器做业务处理,最后将容器处理后的结果响应给外界。

 

二、通讯原理

如图,我举例了计算机内部操作系统和应用程序的通信、计算机之间的通信过程。程序之间通过socket进行通讯,计算机之间由网卡通过计算机网络进行通信。

其中 

socket(套接字)是两个软件之间的通讯保证

        Socket允许不同计算机或同一台计算机上的不同进程之间进行数据传输和交换。通过Socket,应用程序可以连接到其他计算机或网络设备,发送或接收数据,并可以监听或等待其他计算机或网络设备的请求。

        网卡(网络接口卡)是计算机与网络相连的接口设备,它允许计算机通过网络与其他计算机或设备进行通信。 

        端口是计算机与外界通信交流的出口,用于区分不同的网络服务或应用程序。每个网络服务或应用程序都会占用一个或多个端口号,以便在网络上进行数据传输和通信。

  • 端口号是一个16位的数字,范围从0到65535
    • 公认端口(0-1023):紧密绑定于一些服务,如HTTP(80端口)、FTP(21端口)等。
    • 注册端口(1024-49151):松散地绑定于一些服务,可用于多种目的。
    • 动态/私有端口(49152-65535):理论上不应为服务分配这些端口,但实际上常被用于动态分配。

当计算机通过网络发送数据时,数据会经过网卡的处理,并通过网卡上的端口发送到网络上。

接收数据时,网卡会监听网络上的数据包,并根据数据包中的目标端口号将数据传递给相应的网络服务或应用程序。

所以当我们在网络上进行通讯时采用“端口+信息”的方式

如下图,假设微信的端口为8989,QQ端口为1199。信息的传递形式通常如下:

用idea搭建一个简易的服务器和客户端

一、创建一个Java项目

最基础的就可以

二、SocketServer.java&SocketClient

创建Java文件:SocketServer.java
java">/*
* 服务器tomcat ——》接收信息
* */import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class SocketServer {public static void main(String[] args) throws IOException {run();}public static void run() throws IOException {ServerSocket serverSocket= new ServerSocket(4747);//端口的范围:0~65535while (true){//等待客户端连接Socket socket = serverSocket.accept();//阻塞监听:程序会在这里卡住。只有监听到客户端的信息后才会向下执行//输出客户端给我们发来的程序InputStream inputStream=socket.getInputStream();//打开输入流:接收输入的信息int count=0;while (count==0){count=inputStream.available();}byte[] bytes=new byte[count];//01010101010100001101010 用字节数组接收inputStream.read(bytes);String context=new String(bytes);System.out.println(context);}}
}
创建Java文件:SocketClient.java
java">import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;/*
*客户端——》发送信息
*
* */
public class SocketClient {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",4747);OutputStream outputStream=socket.getOutputStream();PrintStream printStream=new PrintStream(outputStream);Scanner scanner=new Scanner(System.in);String context=scanner.nextLine();printStream.println(context);printStream.close();}
}

三、测试

测试一:

我们先让服务器跑起来,运行——SocketServer.java

服务器开始运行后,会在阻塞监听语句处卡住

然后我们运行客户端

在客户端输入传递信息

我们可以看到,该信息可以出现在服务器

测试二:

现在我们进行网页测试,尝试通过网址输入端口,我们的服务器是否可以接收到请求。

在这里我们自设的端口号为4747

我们在网址栏发送GET请求 

可以接收到

 


http://www.ppmy.cn/ops/142290.html

相关文章

如何发挥网络爬虫利器phpSpider最大功效

要发挥网络爬虫利器phpSpider的最大功效,可以从以下几个方面入手: 一、基础配置与优化 安装与配置: 确保PHP环境已正确安装,并通过Composer等工具安装phpSpider及其依赖。根据目标网站的特点,合理设置phpSpider的配置…

React useState使用中遇到的问题及解决办法

React 中的 useState Hook 是一个非常强大和常用的工具,用于在函数组件中管理状态。然而,在使用 useState 时,可能会遇到一些问题和困惑。本文将详细解释 useState 的工作原理,并提供解决常见问题的方法。 useState 的基本用法 …

区块链软件系统海外宣发:全球化市场中的策略与实施

随着区块链技术的快速发展,越来越多的区块链软件系统进入全球市场,涉及加密货币、智能合约、去中心化金融(DeFi)、供应链管理等多个行业应用。为了在激烈的竞争中脱颖而出,区块链软件系统不仅需要具备卓越的技术能力&a…

phpSpider如何处理网页内容的动态加载问题

phpSpider处理网页内容的动态加载问题,主要采取以下几种策略: 一、分析并直接请求API 现代网站中,很多动态加载的内容是通过后端的API接口以JSON或XML等格式返回的。phpSpider可以通过分析网页的请求,找到这些API接口的URL&…

什么是JVM即时编译

什么是JVM即时编译 即时编译是JVM的核心功能,他让java在性能上不输于C/C JVM(Java Virtual Machine)即 Java 虚拟机,是一种用于执行 Java 字节码的虚拟计算机。它是 Java 程序的运行核心,提供了一个独立于底层操作系统…

【教程】让Jupyter支持打开CSV和Excel(xlsx)文件

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 支持CSV JupyterLab本身支持直接打开CSV文件,因此只需要在JupyterLab的文件浏览器中找到CSV文件并双击它,就可以在JupyterLab的…

Web APIs -第2章笔记

目标:掌握事件绑定处理和事件对象,完成常见网页交互 事件监听 事件类型 事件对象 拓展知识 综合案例 描述 属性/方法 效果 事件监听 元素.addEventListener() 事件监听,事件绑定,事件注册 事件类型 鼠标事件 click 鼠…

JavaScript 语法基础(函数,对象,常用类Array,String,Math和Date)

目录 1.函数 2.对象 3.常用类 Array 4.常用类 String 5.常用类 Math 6.常用类 Date 1.函数 将程序中多次要用到的代码块封装起来,就是函数。 函数使代码块的重复使用更方便,且功能独立,便于维护。 函数的定义 function 函数名(参数1,参…