在Javase阶段,我们学会了I/O流。由于I/O流非常强大,我们可以在不同主机上执行I/O操作吗?这就是提及Java的网络编程。
注意:本章将涉及计算机网络的内容(只能解释一般内容,并且计算机网络知识将无法完全解释)
使用通信线路和通信设备将多台计算机与不同的地理位置和独立功能连接起来,并使用完整的网络软件实现资源共享和信息传输,以形成计算机网络系统。
例如,我们家中的路由器通过将我们的设备(手机,平板电脑,计算机,电视剧)连接到路由器以实现互联网采访。实际上,我们的路由器已连接到Internet,我们的设备已连接到路由器,以便我们的设备可以通过路由器访问Internet。通过Internet,我们可以直接访问Internet上的另一个主机。例如,我们必须向我们的朋友发送QQ消息,或通过远程桌面管理操作另一台计算机。
由于我们可以通过Internet访问其他计算机,因此我们如何区分不同的计算机?通过IP地址,我们可以区分不同的计算机:
每台计算机在同一网络上都有自己的IP地址,以将其与其他计算机区分开。我们可以通过其他主机的IP地址访问它。我的移动流量可以连接到连接家庭路由器的计算机吗?(不,因为它们不属于同一网络)
而且我们的计算机可能会运行大量程序,每个程序可能需要通过网络访问其他计算机。那么如何区分它?我们可以通过端口号区分:
因此,我们通常会看到以下内容:192.168.0.11:8080,通过IP:port.的形式访问目标主机上的应用程序服务。注意端口号只能是0-65535之间的值!
IP地址分为IPv4和IPv6。IPv4类似于192.168.0.11。我们上面提到的示例是使用IPv4。它有四组数字。每个组AccountStwo -in -off是:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来入,最多为255.255.255.255。实际上,IPv4可以代表的所有地址长期以来已被用完。IPV6可以节省128位,因此它也可以代表更多的IP地址。IPv6地址如下:1030 :: C9B4:FF12:48AA:1A2B,目前已超过IPv6的-LE。
TCP和UDP是两个不同的传输层协议:
通过套接字技术(这是在计算机之间进行通信的一种方式或一种方式),我们可以在两台计算机之间实施通信。插座也被翻译为插座。它是操作系统底层提供的项目。通信技术,它支持TCP和UDP。和Java对插座的基础支撑进行了完整的软件包,我们可以通过Java实现插座通信。
为了实现套接字通信,我们必须创建一个数据发件人和一个数据接收器,即客户端和服务器,我们需要提前启动服务器才能等待客户端连接。
实际上,这是建立TCP连接的过程:
一旦建立了TCP连接,就可以在服务器和客户端之间发送数据,直到客户端积极关闭连接为止。当然,服务器不仅允许一个客户端连接,我们可以尝试让服务器一直运行到不断接受客户连接:
现在,我们可以多次连接到该服务器。
通过套接字对象,我们可以获取网络数据传输的相应的I/O流:
以同样的方式,由于服务器可以读取客户端的内容,因此客户端还可以等待服务器在发送后给予响应:
我们可以手动关闭单向流:
如果我们不希望服务器等待太久,我们可以通过调用setSotimeout()方法来设置IO超时时间:
当客户端或服务器仍未收到设置时间时,它将引发例外:
我们使用构造函数直接通过构造函数连接服务器,所以我们可以等到需要吗?
如果未通知双方之间的联系,并且没有通知另一方,则一方仍然保持联系,因此我们可以占据资源。因此,我们可以使用setKeepalive()方法来防止这种情况发生:
当客户端连接时,如果将keeplive设置为true,则当对方未发送任何数据时,它将超过一次(请参阅系统内核参数配置),那么我们将发送一个ACK检测包以发送到另一个聚会,检测双方TCP的TCP,哪个/IP连接是否有效。
在传输过程中,TCP实际上将具有用于发送和接收数据的缓冲区:
该缓冲区的大小为:8192,我们可以手动调整其大小以优化传输效率:
现在,插座为我们提供了用于数据传输的IO流,我们可以轻松实现文件传输。
了解如何使用套接字传输文件后,让我们看一下浏览器如何从服务器启动请求:
现在,我们打开浏览器并输入http:// localhost:8080或http://127.0.0.0.1:8080/以连接我们的本地开放服务器。
我们发现浏览器无法打开此链接,但是我们的服务器收到了很多信息:
实际上,这些内容是由HTTP协议指定的请求标头。HTTP是应用程序层协议,称为Super -Text传输协议。它本质上是基于用于数据传输的TCP协议。因此,我们的服务器可以读取HTTP请求。但是,HTTP协议无法保持较长的连接。获得数据响应后,TCP连接将立即关闭。
由于使用了HTTP连接,因此如果我们的服务器要支持响应HTTP请求,则有必要根据HTTP协议的规则返回指定的响应文本。
然后是响应内容(请注意,您必须在编写之前更改它)。我们尝试编写支持HTTP协议的响应内容:
我们可以打开浏览器的开发人员模式(建议在此处使用Chrome/Edge浏览器,按F12打开它),让我们观察浏览器的实际请求过程。
原始:https://juejin.cn/post/7112734001420304415